B-CISC-PTG.1383.Paz Castillo Luis Eduardo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 190

.

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS


CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES

DESARROLLO DE UN SISTEMA WEB DE ÓRDENES


DE TRABAJO PARA EL REGISTRO, CONTROL Y
SEGUIMIENTO DE LAS LABORES EN LA
JEFATURA EDITORIAL E IMPRENTA
DE LA UNIVERSIDAD
DE GUAYAQUIL.

PROYECTO DE TITULACIÓN

Previa a la obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

AUTOR:
Luis Eduardo Paz Castillo

TUTOR:
Ing. Fabricio Javier Sánchez Moreno Mgs.

GUAYAQUIL – ECUADOR
2017
REPOSITORIO NACIONAL EN CIENCIAS Y TECNOLOGÍA
FICHA DE REGISTRO DE TESIS

Título" sistema web de órdenes de trabajo para el registro, seguimiento y control de las labores en
la jefatura editorial e imprenta de la universidad de Guayaquil."

Revisores:

Institución: Universidad de Guayaquil Facultad: Ciencias Matemáticas y Físicas

Carrera: Ingeniería en Sistemas Computacionales

Fecha de publicación: N° de págs.: 190

Área temática: Tecnologías de la Información y Telecomunicaciones

Palabras claves: Desarrollo de un Sistema Web de Órdenes de Trabajo

Resumen: Al finalizar el estudio del levantamiento de la información y necesidades en la Jefatura


Editorial e Imprenta, se estableció la elaboración del desarrollo del sistema web de órdenes de trabajo
que representará de gran valor para la institución que es la Universidad de Guayaquil.

N° de registro (en base de datos): N° de clasificación:

Dirección url:

Adjunto PDF X Si No

contacto con autor: Teléfono: E-mail:

Luis Eduardo Paz Castillo 0986599648 [email protected]

Nombre: Ab. Juan Chávez Atocha, Esp.

Contacto de la institución:

Universidad de Guayaquil Teléfono: 2307729


APROBACIÓN DEL TUTOR

En mi calidad de Tutor del trabajo de titulación, “Desarrollo de un sistema web de


órdenes de Trabajo para el registro, seguimiento y control de las labores en la
Jefatura “Editorial E Imprenta” de la Universidad de Guayaquil“, elaborado por el
Sr. Luis Eduardo Paz Castillo, Alumno no titulado de la Carrera de Ingeniería en
Sistemas Computacionales, Facultad de Ciencias Matemáticas y Físicas de la
Universidad de Guayaquil, previo a la obtención del Título de Ingeniero en Sistemas
Computacionales, me permito declarar que luego de haber orientado, estudiado y
revisado, la Apruebo en todas sus partes.

Atentamente

Ing. Fabricio Javier Sánchez Moreno Mgs.


TUTOR
DEDICATORIA

A Dios por haberme permitido llegar a este punto con salud y estabilidad, a mis
padres Luis Paz y Carmen Castillo por ser el ejemplo de esfuerzo y superación
que tomé de modelo para nunca rendirme ante cualquier dificultad; agradezco
también al resto de mi familia y a todos aquellos que aportaron directa o
indirectamente para la elaboración de esta tesis.

Luis Eduardo Paz Castillo


AGRADECIMIENTO

A la Universidad de Guayaquil por su acogida en los salones de clases y planta


laboral, donde recolecte variedad de conocimientos que me ayudaron a la
realización de este Sistema Web de Ordenes de Trabajo para el registro,
seguimiento y control de las labores en la Jefatura Editorial e Imprenta de la
Universidad de Guayaquil.

Luis Eduardo Paz Castillo


TRIBUNAL PROYECTO DE TITULACIÓN

_______________________________________ ________________________________________
Ing. Eduardo Santos Baquerizo, M.Sc. Ing. José Abel Alarcón Salvatierra, Mgs.
DECANO DE LA FACULTAD DE DIRECTOR DE LA CARRERA DE
CIENCIAS MATEMÁTICAS Y FÍSICAS INGENIERÍA EN SISTEMAS
COMPUTACIONALES

________________________________________ ________________________________________
Ing. Fabricio Javier Sánchez Moreno, Mgs. Ing. Johana Elizabeth Trejo Alarcón, Mgs.
PROFESOR TUTOR DEL ÁREA - PROFESOR REVISOR DEL PROYECTO DE
TRIBUNAL TITULACIÓN

_____________________________
Ab. Juan Chávez Atocha, Esp.
SECRETARIO
DECLARACIÓN EXPRESA

“La responsabilidad del contenido del


proyecto Desarrollo de un Sistema Web de
Órdenes de Trabajo para el registro,
seguimiento y control de las labores en la
Jefatura Editorial e Imprenta de la
Universidad de Guayaquil, me corresponden
exclusivamente; y el patrimonio intelectual de
la misma a la Universidad de Guayaquil”.

Luis Eduardo Paz Castillo

2
.

UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS

CARRERA DE INGENIERÍA EN SISTEMAS


COMPUTACIONALES

DESARROLLO DE UN SISTEMA WEB DE ORDENES DE TRABAJO PARA EL


REGISTRO, CONTROL Y SEGUIMIENTO DE LAS LABORES EN LA
JEFATURA EDITORIAL E IMPRENTA DE LA
UNIVERSIDAD DE GUAYAQUIL.

Proyecto de Titulación que se presenta como requisito para optar por el título de
INGENIERO EN SISTEMAS COMPUTACIONALES.

Autor: Luis Eduardo Paz Castillo

C.I. 0921215570

Tutor: Ing. Fabricio Javier Sánchez Moreno Mgs.

Guayaquil, 6 de diciembre de 2017

3
CERTIFICADO DE ACEPTACIÓN DEL TUTOR

En mi calidad de Tutor del proyecto de titulación, nombrado por el Consejo


Directivo de la Facultad de Ciencias Matemáticas y Físicas de la Universidad de
Guayaquil.

CERTIFICO:

Que he analizado el Proyecto de Titulación presentado por el


estudiante LUIS EDUARDO PAZ CASTILLO, como requisito previo para optar por
el título de Ingeniero en Sistemas Computacionales cuyo problema es:

DESARROLLO DE UN SISTEMA WEB DE ÓRDENES DE TRABAJO PARA EL


REGISTRO, SEGUIMIENTO Y CONTROL DE LAS LABORES EN LA
JEFATURA EDITORIAL E IMPRENTA DE LA UNIVERSIDAD DE GUAYAQUIL.

Considero aprobado el trabajo en su totalidad.

Presentado por:

LUIS EDUARDO PAZ CASTILLO 0921215570

Tutor: Ing. Fabricio Javier Sánchez Moreno Mgs.

Guayaquil, 6 de diciembre de 2017

4
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

Autorización para Publicación del Proyecto de Titulación en Formato Digital.

1. Identificación del Proyecto de Titulación

Nombre del Alumno: Luis Eduardo Paz Castillo


Dirección: km 11/2 vía a la costa Cdla. Portal al Sol
Teléfono: 0986599648 E-mail: [email protected]
Facultad: Ciencias Matemáticas y Físicas
Carrera: Ingeniería en Sistemas Computacionales
Proyecto de titulación al que opta: Ingeniero en Sistemas Computacionales
Profesor tutor: Ing. Fabricio Javier Sánchez Moreno Mgs.
Título del Proyecto de titulación: Sistema web de Órdenes de Trabajo para el registro,
seguimiento y control de las labores en la Jefatura Editorial e Imprenta de la Universidad
de Guayaquil.
Tema del Proyecto de Titulación: Sistema web de Órdenes de Trabajo

2. Autorización de Publicación de Versión Electrónica del Proyecto de


Titulación

A través de este medio autorizo a la Biblioteca de la Universidad de Guayaquil y a


la Facultad de Ciencias Matemáticas y Físicas a publicar la versión electrónica de
este Proyecto de titulación.

Publicación electrónica:

Inmediata x Después de 1 año


Firma Alumno:
3. Forma de envío:
DVDROM CDROM X

5
ÍNDICE GENERAL

APROBACIÓN DEL TUTOR.............................................................................. III


DEDICATORIA ................................................................................................... IV
AGRADECIMIENTO ............................................................................................V
TRIBUNAL PROYECTO DE TITULACIÓN ..................................................... VI
DECLARACIÓN EXPRESA ................................................................................. 2
CERTIFICADO DE ACEPTACIÓN DEL TUTOR............................................... 4
ÍNDICE GENERAL................................................................................................ 6
ABREVIATURAS .................................................................................................. 9
ÍNDICE DE CUADROS ....................................................................................... 10
ÍNDICE DE GRÁFICOS ...................................................................................... 11
RESUMEN............................................................................................................ 13
ABSTRACT .......................................................................................................... 14
INTRODUCCIÓN ................................................................................................ 15
CAPÍTULO I ....................................................................................................... 16
EL PROBLEMA ................................................................................................. 16
1.1. PLANTEAMIENTO DEL PROBLEMA ................................................. 16
1.1.1. Ubicación del Problema en un Contexto ..................................... 16
1.1.2. Situación Conflicto Nudos Críticos ............................................. 16
1.1.3. Causas y Consecuencias del Problema ........................................ 17
1.1.4. Delimitación del Problema .......................................................... 18
1.1.5. Formulación del Problema .......................................................... 18
1.1.6. Evaluación del Problema ............................................................. 18
1.2. OBJETIVOS ............................................................................................. 19
1.2.1. Objetivo general .......................................................................... 19
1.2.2. Objetivos específicos ................................................................... 19
1.3. ALCANCES DEL PROBLEMA .............................................................. 20
1.4. JUSTIFICACIÓN E IMPORTANCIA ..................................................... 20
1.5. METODOLOGÍA DEL PROYECTO: ..................................................... 21
1.5.1. Aplica a proyecto tecnológico funcional: Metodología de
Desarrollo .................................................................................................. 21
1.5.2. Supuestos y Restricciones ........................................................... 21
1.5.3. Plan de calidad (Pruebas a realizar)............................................. 22

6
CAPÍTULO II ..................................................................................................... 23
2. MARCO TEÓRICO ............................................................................... 23
2.1. Antecedentes del estudio ................................................................. 23
2.2. Fundamentación Teórica ................................................................. 24
2.2.1. Desarrollo Web............................................................................ 24
2.2.2. Scrum........................................................................................... 24
2.2.3. Laravel ......................................................................................... 26
2.2.4. Mvc .............................................................................................. 27
2.2.5. Framework ................................................................................... 28
a. Frameworks más usados en el mercado laboral .............................. 28
2.2.6. Aura. ............................................................................................ 28
2.2.7. Phalcon ........................................................................................ 29
2.2.8. Cakephp ....................................................................................... 29
2.2.9. Zend Framework ......................................................................... 29
2.2.10. Codeigniter............................................................................... 30
2.2.11. Symfony2 ................................................................................. 30
2.2.12. Laravel ..................................................................................... 31
2.2.13. Xampp ...................................................................................... 32
2.2.14. Apache ..................................................................................... 32
2.2.15. Base de datos Mysql ................................................................ 33
2.3. Fundamentación Legal .............................................................................. 34
2.3.1. Decreto 1014 ............................................................................................. 34
2.3.2. Sobre el uso del Software Libre ................................................................ 34
2.3.3. Ley de propiedad intelectual ..................................................................... 34
2.3.4. Ley orgánica de educación superior (loes)................................................ 35
2.3.5. 410 Tecnología de la Información ............................................................ 35
2.3.6. 410-04 Políticas y Procedimientos ............................................................ 35
2.3.7. 410-06 Administración de Proyectos Tecnológicos ................................. 36
2.3.8. Reglamentos a la ley de comercio electrónico, firmas electrónicas y
mensajes de datos. ................................................................................................. 36
CAPÍTULO III .................................................................................................... 39
3. PROPUESTA TECNOLÓGICA ................................................................ 39
3.1. Análisis de Factibilidad. ............................................................................ 39
3.1.1. Factibilidad Operacional ........................................................................... 40

7
3.1.2. Factibilidad Técnica .................................................................................. 41
3.1.3. Factibilidad Legal...................................................................................... 41
3.1.4. Factibilidad Económica ............................................................................. 42
a. Egresos de Software ........................................................................ 42
b. Egresos de Hardware....................................................................... 42
c. Egresos Varios ................................................................................ 42
d. Recurso Humano ............................................................................. 43
1. Programador en PHP, Laravel y Mysql .......................................... 43
e. Resumen total de egresos ................................................................ 43
3.2. Diagrama de caso de uso de Swot. ............................................................ 44
3.3. Diagrama de Secuencia ............................................................................. 51
3.4. Etapas de la metodología del proyecto...................................................... 51
3.4.1. Sprint No. 0 ................................................................................. 52
3.4.2. Sprint No. 1 ................................................................................. 52
3.4.3. Sprint No. 2 ................................................................................. 54
3.4.4. Sprint No. 3 ................................................................................. 59
3.4.5. Sprint No. 4 ................................................................................. 61
3.4.6. Sprint No. 5 ................................................................................. 63
3.4.7. Sprint No. 6 ................................................................................. 63
3.5. Modelo Entidad Relación.......................................................................... 68
3.6. Entregables del proyecto ........................................................................... 69
CAPÍTULO IV .................................................................................................... 70
RESULTADOS CONCLUSIONES Y RECOMENDACIONES .................... 70
4. Criterios de aceptación del producto o Servicio ........................................ 70
4.1. Matriz de aceptación ................................................................................. 70
4.2. Informe de aceptación y aprobación ......................................................... 71
4.3. Criterios de validación de la propuesta ..................................................... 67
4.4. Análisis de datos de encuesta de satisfacción del proyecto ...................... 68
Bibliografía ........................................................................................................... 80
Anexos .................................................................................................................. 81

8
ABREVIATURAS

SWOT Sistema Web de Órdenes de Trabajo


OT Órdenes de Trabajo
OTI Órdenes de Trabajo Interna
OTT Órdenes de Trabajo de Títulos
UG Universidad de Guayaquil
FTP Protocolo de Transferencia de Ficheros
Html Lenguaje de Marca de salida de Hyper Texto
http Protocolo de transferencia de Hyper Texto
ISP Proveedor de Servicio de Internet
MSc. Máster
URL Localizador de Fuente Uniforme
www world wide web (red mundial)
SMTP Simple Mail Transport Protocol.
URL Universal Resource Locator.
M.E.R Modelo entidad relación
Ing. Ingeniero/Ingeniera
Ab. Abogado
ISP Proveedor de Servicio de Internet
Sql Structured Query Language
PHP Hypertext Preprocessor
MVC Modelo Vista Controlador

9
ÍNDICE DE CUADROS
Pág.
CUADRO N. 1
Causas y consecuencias ................................................................................... 17
CUADRO N. 2
Delimitación del problema.................................................................................. 18
CUADRO N. 3
Plan de hosting contratado ................................................................................ 41
CUADRO N. 4
Detalles de egresos en hardware ...................................................................... 42
CUADRO N. 5
Detalle de egresos varios .................................................................................. 43
CUADRO N. 6
Egreso de RRHH ............................................................................................... 43
CUADRO N. 7
Detalle de egresos totales ................................................................................. 43
CUADRO N. 8
Requerimientos Funcionales ............................................................................. 70
CUADRO N. 9
Requerimientos no funcionales .......................................................................... 71
CUADRO N. 10
Plan de pruebas realizado ................................................................................. 67
CUADRO N. 11
Funcionalidad de SWOT .................................................................................... 68
CUADRO N. 12
Registro online de las órdenes de trabajo .......................................................... 69
CUADRO N. 13
Aceptación de interfaz de SWOT. ...................................................................... 70
CUADRO N. 14
Tiempo de respuesta de SWOT......................................................................... 71
CUADRO N. 15
Validaciones en SWOT ...................................................................................... 72
CUADRO N. 16
Acceso al sistema .............................................................................................. 73
CUADRO N. 17
Gestión de las órdenes de trabajo ..................................................................... 74
CUADRO N. 18
Gestión manual de las órdenes de trabajo ......................................................... 75
CUADRO N. 19
Gestión de trabajos y control de inventario ágil .................................................. 76
CUADRO N. 20
Administración del inventario llevado en Excel .................................................. 77

10
ÍNDICE DE GRÁFICOS
Pág.
GRÁFICO Nº 1
Estructura de Laravel ......................................................................................... 26
GRÁFICO Nº 2
Modelo-Vista-Controlador .................................................................................. 27
GRÁFICO Nº 3
Laravel y su funcionalidad ................................................................................. 31
GRÁFICO Nº 4
Panel de Control de Xampp ............................................................................... 32
GRÁFICO Nº 5
Funcionalidad de Apache .................................................................................. 33
GRÁFICO Nº 6
Funcionalidad de MySQL................................................................................... 33
GRÁFICO Nº 7
Diagrama de caso de uso de Swot .................................................................... 44
GRÁFICO Nº 8
Diagrama de caso de uso iniciar sesión............................................................. 45
GRÁFICO Nº 9
Diagrama de caso de uso gestión de materiales ............................................... 46
GRÁFICO Nº 10
Diagrama de caso de uso gestión de órdenes de trabajo en coordinación ........ 47
GRÁFICO Nº 11
Diagrama de caso de uso gestión de órdenes de trabajo en taller ..................... 47
GRÁFICO Nº 12
Diagrama de caso de uso gestión de órdenes de trabajo en gestión externa .... 48
GRÁFICO Nº 13
Diagrama de caso de uso gestión de órdenes de trabajo en recepción ............. 48
GRÁFICO Nº 14
Diagrama de caso de uso gestión de órdenes de trabajo en diseño .................. 49
GRÁFICO Nº 15
Diagrama de caso de uso gestión de usuarios en Swot ..................................... 50
GRÁFICO Nº 16
Diagrama de caso de uso usuarios visitantes .................................................... 50
GRÁFICO Nº 17
Diagrama de secuencia ..................................................................................... 51
GRÁFICO Nº 18
Framework Laravel en funcionamiento desde localhost ..................................... 53
GRÁFICO Nº 19
Interfaz principal de SWOT ................................................................................ 54
GRÁFICO Nº 20
Interfaz de ingreso de nueva orden de trabajo ................................................... 58
GRÁFICO Nº 21
Interfaz ingreso de nuevo cliente ....................................................................... 59
GRÁFICO Nº 22
Interfaz ingreso de nuevos materiales ............................................................... 60
GRÁFICO Nº 23
Interfaz ingreso de nueva categoría ................................................................... 61
GRÁFICO Nº 24
Interfaz ingreso de nueva categoría ................................................................... 62

11
GRÁFICO Nº 25
Interfaz ingreso de nuevo proveedor.................................................................. 62
GRÁFICO Nº 26
Interfaz ingreso de nuevo usuario ...................................................................... 63
GRÁFICO Nº 27
Interfaz de visualización de materiales ingresados ............................................ 64
GRÁFICO Nº 28
Interfaz de visualización de categorías ingresadas ............................................ 64
GRÁFICO Nº 29
Interfaz de visualización de stock de materiales ingresados .............................. 65
GRÁFICO Nº 30
Interfaz de visualización de proveedores ingresados ......................................... 65
GRÁFICO Nº 31
Interfaz de visualización de órdenes de trabajo ingresadas ............................... 66
GRÁFICO Nº 32
Interfaz de visualización de clientes ingresados ................................................ 66
GRÁFICO Nº 33
Interfaz de visualización de usuarios ingresados ............................................... 67
GRÁFICO Nº 34
Arquitectura del sistema .................................................................................... 67
GRÁFICO Nº 35
Diagrama relacional de Base de Datos MySql ................................................... 68
GRÁFICO Nº 36
Gráfico de funcionalidad de SWOT .................................................................... 68
GRÁFICO Nº 37
Gráfico de registro online de las órdenes de trabajo .......................................... 69
GRÁFICO Nº 38
Gráfico aceptación de interfaz de SWOT ........................................................... 70
GRÁFICO Nº 39
Gráfico de tiempo de respuesta de SWOT......................................................... 71
GRÁFICO Nº 40
Gráfico de validaciones en SWOT ..................................................................... 72
GRÁFICO Nº 41
Gráfico de acceso al sistema ............................................................................. 73
GRÁFICO Nº 42
Gráfico de gestión de las órdenes de trabajo ..................................................... 74
GRÁFICO Nº 43
Gráfico de gestión manual de las órdenes de trabajo ........................................ 75
GRÁFICO Nº 44
Gráfico de gestión de trabajos y control de inventario ágil ................................. 76
GRÁFICO Nº 45
Gráfico de la administración del inventario llevado en Excel .............................. 77

12
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

DESARROLLO DE UN SISTEMA WEB DE ÓRDENES DE TRABAJO PARA EL


REGISTRO, CONTROL Y SEGUIMIENTO DE LAS LABORES EN LA
JEFATURA EDITORIAL E IMPRENTA DE LA
UNIVERSIDAD DE GUAYAQUIL.

Autor: Luis Eduardo Paz Castillo


Tutor: Ing. Fabricio Javier Sánchez Moreno Mgs.

RESUMEN

Las órdenes de trabajo generadas por las distintas unidades administrativas y


académicas de la Universidad de Guayaquil, son utilizadas para el desarrollo de
las actividades diarias en la Jefatura Editorial E Imprenta, el desarrollo de este
sistema web de órdenes de trabajo programado en el lenguaje PHP, con el
Framework Laravel y base de datos MySql, se utilizará para el registro control y
seguimiento de todas las órdenes que ingresan diariamente, la degradación de los
documentos por la constante manipulación y el traspapeleo generan retrasos
constantes en la entrega de los trabajos y en la elaboración y entrega de informes
mensuales, esto ocurre porque todas estos actividades se las realiza en forma
manual.

13
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES

DEVELOPMENT OF A WEB SYSTEM OF WORK ORDERS FOR THE


REGISTRATION, CONTROL AND MONITORING OF WORK IN
THE EDITORIAL HEADING AND IMPRINT OF THE
UNIVERSITY OF GUAYAQUIL.

Autor: Luis Eduardo Paz Castillo


Tutor: Ing. Fabricio Javier Sánchez Moreno Mgs.

ABSTRACT

The work orders generated by the different administrative and academic units of
the University of Guayaquil are used for the development of daily activities in the
Publishing and Printing Headquarters, the development of this web system of work
orders programmed in the PHP language, With the Laravel framework and MySql
database, it will be used for the registration control and monitoring of all the orders
that enter daily, the degradation of the papers by the constant manipulation and
traspapeleo generate constant delays in the delivery of the works and in the
elaboration And reporting, this happens because all these processes are done
manually.

14
INTRODUCCIÓN

En la actualidad debido al rápido avance de la tecnología, los medios más


comunes de difusión son las redes sociales, y las empresas que se encargan de
comercializar los libros vía internet, proveen las herramientas necesarias para que
los autores puedan editar sus obras en pocos pasos sin depender de una Editorial,
encargándose también registro de propiedad intelectual y del marketing por un
porcentaje de las ganancias.

Cada día se reduce la brecha de depender de una Editorial para diagramar e


imprimir obras literarias de docentes y estudiantes, al existir empresas que brindan
facilidades en cada paso, sin embargo existen trabajos como empastados,
anillados, restauración de libros, corrección de estilos, diseño de material
publicitario, etc. que realiza el personal de una imprenta que no puede ser suplido
por un ordenador, por lo que la Editorial E imprenta se convierte en un
complemento fundamental para las diferentes unidades administrativas y
académicas de la Universidad de Guayaquil al ofrecer todos estos servicios al
costo con personal capacitado, herramientas y maquinaria necesaria.

El método manual que utiliza la Editorial E Imprenta para almacenar los


documentos actualmente, resulta tedioso e incómodo cuando se requiere
consultar alguna orden reciente o antigua, por lo que contar con un sistema web
donde se registre toda esta información ayudaría al desarrollo de las diferentes
actividades diarias, como responder a consultas por parte de los usuarios sobre
cómo va su trabajo, o elaborar informes referentes a la cantidad de órdenes
despachada por mes.

Es común leer o escuchar sobre digitalización de la información en pequeñas,


medianas y grandes cantidades (texto, imágenes, sonidos, etc.). Se ha generado
una necesidad en la sociedad por tener un respaldo de la información con la cual
se trabaja diariamente, ya sea que se maneje esta de forma pública o privada,
poder consultarla desde cualquier lugar mediante internet por algún medio ya sea
este un dispositivo móvil u ordenador. La documentación de las órdenes de
trabajos y oficios con los que se trabaja día tras día se genera en grandes
cantidades, por lo que se convierte en un reto conservarla en buen estado físico,
evitando que sea afectada por el tiempo o la manipulación constante.

Tener un sistema web capaz de gestionar la información, involucra un ahorro de


recursos humanos y un significativo aumento en la productividad, mejorando el
desarrollo y la calidad del servicio prestado, reduciendo las necesidades de
espacio físico para almacenar la documentación, asegurando la conservación de
la información, facilitando las consultas simultaneas cerca o a distancia,
restringiendo el acceso a personal no autorizado y agilitando la creación de copias
de seguridad.

15
CAPÍTULO I

EL PROBLEMA
1.1. PLANTEAMIENTO DEL PROBLEMA

1.1.1. Ubicación del Problema en un Contexto

La Jefatura Editorial E Imprenta ubicada en la Universidad de Guayaquil, posee


métodos obsoletos de almacenamiento de su documentación, lo que dificulta a su
personal acceder a esta en el momento de necesitarla, o dar un informe sobre el
estado en que se encuentran las órdenes de trabajos ingresadas en el instante en
que son solicitadas, esto ocurre debido a que no posee un medio ágil con el cual
pueda registrar y consultar la información de las órdenes ingresadas.

Las constantes peticiones de los usuarios sobre el estado de sus trabajos y la


distribución de la información a las áreas de la Editorial se las realizan en forma
manual, esto provoca agotamiento, malestar y algunas veces confusión en el
personal de la jefatura, para disminuir un poco la carga se distribuyen copias al
personal lo que genera desperdicio de insumos y suministros.

Poseer un sistema de órdenes de trabajo capaz de registrar, controlar y dar


seguimiento, gestionaría una correcta administración de las órdenes de trabajo,
agilitando la distribución de la información, acortando los tiempos de entrega de
las órdenes ingresadas y facilitaría la consulta del estado de cada trabajo por parte
de los usuarios interesados.

1.1.2. Situación Conflicto Nudos Críticos

Los inconvenientes en la Jefatura Editorial E Imprenta se originan por la falta de


registros digitales de la información de las ordenes de trabajo, el encargado de
cada área recibe una copia de la orden la cual por la constante manipulación se
deteriora, daña o extravía, esto provoca retrasos en las entregas de los trabajos y
en la elaboración de reportes de estado de los mismos; en el área de bodega se
lleva un registro de inventario manual y digital de insumos y suministros, al
manipular erróneamente o borrar estos documentos ocurre un descuadre en el
inventario, lo que provoca que no se pueda consultar si existe material necesario

16
para elaborar una orden, o hacer la programación de gastos en pedidos para
abastecer la bodega con insumos y suministros que se requerirán en el siguiente
año, esto influye directamente en la entrega del trabajo, ya que la orden debe ser
entregada incompleta o se debe detener hasta que la bodega sea abastecida.

Estas contrariedades emergen por la falta de un sistema informático que facilite la


gestión de las órdenes de trabajo, que permita controlar el inventario y seguir las
actividades cumplidas por cada área en cada orden en la jefatura Editorial E
Imprenta. La demora en la búsqueda de la documentación con la información
necesaria para realizar el trabajo y la falta de control del inventario, afecta
directamente en la entrega de los trabajos y retrasa las labores de los funcionarios,
quienes para sobrellevar el problema recurren a quedarse hasta altas horas fuera
de su jornada laboral para poder cumplir con las entregas en el tiempo requerido.

1.1.3. Causas y Consecuencias del Problema

CUADRO N. 1
Causas y consecuencias
Causas Consecuencias
Desgaste de la tinta impresa en papel químico que provocaría
Constante manipulación de las
pérdida de información sobre el trabajo creando un conflicto y
órdenes de trabajo.
retrasando la entrega del mismo.
Almacenamiento de las órdenes
Deterioro de la documentación que provocaría pérdida de
de trabajo y sus anexos
información afectando a la elaboración de reportes mensuales.
agrupados en folders.
Distribución de la información de
Desperdicio de insumos y suministros al fotocopiar las órdenes
las órdenes de trabajo y anexos
de trabajos y anexos para entregar a todas las áreas.
en fotocopias.
Control de las labores del La pérdida de esta documentación provocaría que el personal no
personal en forma manual. pueda justificar sus labores y su responsabilidad en los trabajos.
La entrega de reportes con base de registros físicos provocaría
Elaboración de reportes con datos
una demora en la entrega del estado de una orden de trabajo.
tomados de registros físicos.

El extravío de documentación tanto de órdenes como anexos


Traspapeleo de la
provocaría que los trabajos sean mal elaborados creando un
documentación.
conflicto con los usuarios.
Falta de personal encargado de la La falta del personal de recepción provocaría que las órdenes de
recepción de órdenes. trabajo no sean entregadas a tiempo para su estudio y ejecución.
El daño del ordenador o la eliminación del archivo provocarían
la pérdida total de la información, a causa de que el servicio esta
Registro del inventario en un
descentralizado solo el bodeguero maneja el archivo master y
archivo de Excel.
las demás áreas solo reciben copias que constantemente tienen
que actualizar.
Actualización manual de registros La falta del control de stock provocaría retrasos en la
de insumos y suministros culminación de trabajos, la falta de insumos y suministros
utilizados. cuando se los necesitan retrasaría la salida de una orden.
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

17
1.1.4. Delimitación del Problema

CUADRO N. 2
Delimitación del problema
Campo Área Aspecto Tema
Universidad de Editorial E Registro, control Órdenes de
Guayaquil Imprenta y seguimiento de Trabajo
las órdenes de
trabajo
Elaboración: Luis Eduardo Paz Castillo
Fuente: Editorial E Imprenta

1.1.5. Formulación del Problema

Un sistema web de órdenes de trabajo contribuiría para solucionar los conflictos


del manejo de registros de las órdenes, control y su seguimiento, controlando el
flujo de inventario y la generación de reportes detallados de las labores internas
en la Jefatura Editorial E Imprenta de la Universidad de Guayaquil.

1.1.6. Evaluación del Problema

1.1.6.1. Delimitado: La Jefatura Editorial E Imprenta de la Universidad de


Guayaquil tiene inconvenientes que comprenden el registro, control y
seguimiento de las órdenes de trabajo e inventario y la demora en la
elaboración de reportes, esto ocurre porque no poseen un sistema web
que les permita resolver las problemáticas existentes.

1.1.6.2. Evidente: Se observa que la demora en la entrega de trabajos es a


causa de la mala administración de las órdenes de trabajo, que se
traspapelan, dañan o quedan detenidas por falta de insumos o
suministros, de esta manera el control interno por parte de los
encargados de cada área se ve afectado.

1.1.6.3. Relevante: La Editorial E Imprenta desempeña una serie de labores


que complementan los trabajos de las unidades administrativas y
académicas dentro de la Universidad de Guayaquil. Se encarga del
diseño e impresión de Títulos, libros, facturas, retenciones, ordenes de
trabajos, etc.

18
1.1.6.4. Contextual: Es transcendental destacar la implementación del sistema
de órdenes de trabajo, para gestionar las labores internas, tener
acceso a la información y generar reportes actualizados llevando un
control adecuado del inventario.

1.1.6.5. Factible: La jefatura tiene el recurso humano idóneo y es


constantemente capacitado por la Universidad de Guayaquil.

1.1.6.6. Identifica los productos esperados: Se entregará un sistema web de


órdenes de trabajo automatizado que permita registrar, controlar y dar
seguimiento a las labores de la Editorial, controlar el inventario y
generar reportes actualizados.

1.1.6.7. Variables: Están identificadas de la siguiente manera:

1.1.6.7.1. Variable Independiente: Gestión de las Órdenes de Trabajo.


1.1.6.7.2. Variable Dependiente: Incorrecta forma de almacenar la información,
áreas dispersas, acceso limitado a la documentación, falta de
coordinación entre áreas y riesgo de pérdida de documentación.

Con la implementación del proyecto se busca conseguir un sistema web de


órdenes de trabajo funcional que cumpla con las expectativas de las diferentes
unidades académicas y administrativas.

1.2. OBJETIVOS

1.2.1. Objetivo general


Desarrollar un sistema informático web de órdenes de trabajo por medio del
Framework Open Source Laravel, que tenga la capacidad de registrar, controlar y
dar seguimiento a las labores internas de la “Editorial E Imprenta” de la
Universidad de Guayaquil.

1.2.2. Objetivos específicos


 Analizar la existencia de un sistema web de órdenes de trabajos.
 Definir los procesos de la Editorial E Imprenta a realizar.
 Definir la interfaz para los usuarios a desarrollar.
 Utilizar la metodología SCRUM para el desarrollo del sistema web.
 Utilizar Laravel un Framework para el desarrollo de los módulos de
Órdenes de trabajo, Inventario y Reportes.

19
1.3. ALCANCES DEL PROBLEMA

Tomando como punto de partida la Jefatura Editorial E Imprenta, no cuenta con


ningún tipo de sistema con el cual pueda llevar un registro, control y seguimiento
de las labores en las órdenes de trabajo generadas por las diferentes unidades
académicas y administrativas de la Universidad de Guayaquil, se determina como
alcance el desarrollo de un sistema web de órdenes de trabajo. La solución a
desarrollarse permitirá gestionar las órdenes contribuyendo así a:

 Administrar tres módulos: órdenes de trabajo, inventario y reportes.


 Administrar la información de las órdenes de trabajo.
 Administrar el inventario de insumos y suministros.
 Generar reportes de las órdenes de trabajo.
 Estar disponible desde el hosting externo que es alquilado por la Jefatura
para acceder a él desde cualquier lugar con cualquier dispositivo con una
conexión a internet.
 Manejará el registro de clientes, proveedores, categorías, materiales,
usuarios y órdenes de trabajo.
 No realizará cotizaciones de trabajos.
 No calculará valor por horas trabajadas.
 No estará disponible sin una conexión a internet.
 No proporcionará módulo financiero.
 No proporcionará módulo de recursos humanos.
 No manejará ventas
 No manejará compras
 No generará solicitudes u oficios de adquisición de insumos y
suministros.

1.4. JUSTIFICACIÓN E IMPORTANCIA


El desarrollo de este sistema web es muy importante para las unidades
académicas y administrativas de la Universidad de Guayaquil, dado que los
trabajos que realiza la Jefatura Editorial E Imprenta representa un complemento
esencial para el desarrollo diario de las actividades en toda la universidad. Para
poder agilizar el flujo de trabajo sin retrasos, este sistema web gestionará las
ordenes de trabajo, ayudando a mejorar la administración interna, facilitará llevar
el control del inventario de insumos y suministros que en la actualidad se maneja
en forma manual, ayudará a suministrar la información de la documentación a
todas las áreas, generará reportes detallados de todas las ordenes de trabajos
ingresadas desde cualquier lugar a la hora que se lo necesiten; su justificación
es contribuir con el desarrollo y entrega de trabajos de forma organizada y ágil,
de esta manera las unidades administrativas y académicas puedan contar con la
Editorial para obtener respuestas rápidas a trabajos urgentes requeridos en
cualquier fecha del año.

20
La diagramación e impresión de títulos universitarios, diplomas y certificados
representan los documentos de mayor importancia trabajados en la Editorial,
estos se elaboran bajo estrictas medidas de seguridad impuestas por el Jefe a
cargo, son solicitados por las unidades académicas y/o administrativas, su
elaboración se la realiza de manera aislada y pasa por varios filtros antes de ser
entregados, de la misma manera se maneja la impresión del material utilizado en
las votaciones con la diferencia que en este proceso interviene todo el personal
de la Editorial junto con la autoridad encargada responsable de la facultad, de
donde se realiza la elección, las unidades administrativas solicitan una gran
variedad de trabajos los cuales son manejados dependiendo la labor por las
áreas de diseño, impresión o manufactura.

Para lograr las mejoras planteadas, este proyecto se realizará en un software


Open Source, con una interfaz gráfica amigable y sencilla, sometiéndose a las
debidas pruebas funcionales que verifiquen que el sistema resuelve el problema
interno de la Jefatura Editorial E Imprenta.

1.5. METODOLOGÍA DEL PROYECTO:


1.5.1. Aplica a proyecto tecnológico funcional: Metodología de Desarrollo

Para la implementación del sistema web se usará la metodología de software


SCRUM, una de sus características es el ayudar a la medición de manera fácil los
avances del desarrollo permitiendo realizar correctivos de ser requeridos a tiempo
y que esto nos facilite alcanzar lo planificado.

Adicionalmente podremos evaluar frecuentemente los avances realizados en el


proyecto, y si se diera el caso detectar los puntos críticos para dar una alternativa
como solución realizando una implementación limpia cumpliendo tiempos
establecidos.

1.5.2. Supuestos y Restricciones

 El sistema debe estar continuamente en línea.


 Debe atender todas las necesidades que los usuarios requieran.
 Autentificar todos los escenarios definidos por el proyecto.
 El sistema deberá proveer al usuario las opciones necesarias para el
registro y control de las órdenes de trabajo e inventario de la Jefatura.
 Las validaciones que se usarán para la anulación deberán cumplir las
políticas establecidas por la Jefatura.

21
 El sistema se usará exclusivamente en la Universidad de Guayaquil, por el
personal de la Editorial E Imprenta.
 Solo serán subidas al sistema las órdenes de trabajo, que cuenten con la
firma autorizada de la autoridad responsable y el jefe o subrogantes a
cargo.
 El Jefe de la Editorial, el coordinador general y el encargado del área de
sistemas son los únicos que tendrán el acceso de super-administrador al
sistema web de órdenes de trabajo.

1.5.3. Plan de calidad (Pruebas a realizar)

 Revisar los registros del proceso de ingreso de las órdenes de trabajo al


sistema Web.

 Revisar que las validaciones cumplan con los datos que se necesitan para
el ingreso de datos a la base de datos.

 Verificar que los datos ingresados a la base sean correctos conforme a las
órdenes de trabajo.

 Revisar que el sistema se encuentre correctamente conectado la base de


datos.

 Revisar si el flujo del trabajo se completa.

 Verificar si los tiempos en la entrega de trabajos se reduce luego de


implementar el sistema.

 Revisar los detalles de los reportes generados comparándolos con los


físicos para saber si cumplen con el objetivo con el que se los genera.

22
CAPÍTULO II

2. MARCO TEÓRICO

2.1. Antecedentes del estudio

En la Jefatura Editorial E Imprenta se evidenció que no cuenta con un sistema


capaz de gestionar el registro, control y seguimiento de la información que
contienen las órdenes de trabajo, de esta manera brindar una solución robusta
que contribuya a esta Jefatura, para facilitar el desarrollo de sus actividades diarias
aportando a la entrega de trabajos de manera ágil.

La forma en que se lleva la documentación actualmente dificulta la gestión de la


información, cada área tiene que acceder a los documentos físicos para extraer
datos clave que serán utilizada para elaborar los trabajos, además de esto al
finalizar el mes se tiene que crear el reporte, el cual se elabora consultando cada
orden ingresada con sus anexos, en el mismo se detalla los insumos y suministros
utilizados con todos los detalles que justifican la veracidad de la orden, la autoridad
responsable que emitió la orden, la unidad que solicita el trabajo, el tiempo que se
utilizó para llevarla a cabo, quien retiro el trabajo final y los funcionarios públicos
que intervinieron. Mora (2015), afirma que utilizar las órdenes de trabajo en forma
manual genera ineficiencia y una pérdida de tiempo significativo, hoy en día las
empresas ya sean estas públicas o privadas requieren sistemas que ayuden en el
registro y control de la información que se maneja en torno a la actividad que
realiza.
La forma manual que se usa actualmente para consultar la información utilizada
constantemente, resulta tedioso y agotador, además que esta documentación en
grandes cantidades suele traspapelarse con facilidad, hay que considerar también
el tiempo que perdura la tinta impresa en papel químico en la cual las órdenes de
trabajo están elaboradas, además de que esta se desgasta por la constante
manipulación. Basantes (2014), menciona que la deficiencia inicia en el instante
en que no se tiene un sistema de órdenes lo cual no permite observar la realidad
en el inventario luego de realizar cada trabajo.

Actualmente en el mercado existen soluciones para la gestión de las órdenes de


trabajo, sistemas orientados al servicio técnico, sistemas de costos por órdenes y
ordenes de trabajos para producción. Paez (2017) implemento un aplicativo
portable para ejecutar en plataforma Windows, un Sistema de gestión de órdenes
de uso general de trabajo capaz de registrar y modificar la información e imprimir

23
reportes de las órdenes orientado a información variada. GB System (2014) ofrece
una plataforma web para gestión de las órdenes de trabajo a empresas dedicadas
al soporte técnico de las industrias, maneja internamente órdenes de trabajo,
presupuestos, registros de clientes y reportes.

Los sistemas en el mercado son de gran utilidad para gestionar las órdenes de
trabajo, sin embargo no siguen la misma línea de negocio por lo que no pueden
ser utilizados en una editorial. El proyecto que se desarrollará siguiendo la
metodología SCRUM, esto ayudará a medir los avances mediante sprint en
reuniones donde el cliente prueba el avance del producto y lo aprueba tal y como
esta o sugiere cambios. Trigas (2012) menciona que esta metodología es una
técnica que mejora la comunicación entre cliente y proveedor, optimizando la
productividad de los equipos de trabajo, promoviendo la innovación, motivación y
el compromiso de los equipos involucrados, además reduce el margen de error y
los riesgos del proyecto cuyo principal objetivo es optimizar el retorno de la
inversión.

Se programará en ambiente web por lo que se utilizará LARAVEL (framework con


lenguaje PHP) para su desarrollo, librerías como Jquery, Java Script y HTML5.
Además se requerirá contar con APACHE como servidor web y una base de datos
MySql.

2.2. Fundamentación Teórica


Se plantea un marco teórico enfocado en el desarrollo en ambiente web de una
interfaz amigable para el registro, control y seguimiento de las órdenes de trabajo.
Este debe estar de acuerdo a cada uno de los atributos establecidos por el
proyecto ofreciendo al usuario final el servicio continuamente y otorgando datos
de forma ágil y seguro.

2.2.1. Desarrollo Web

Garro (2014) afirma que es un término amplio para el trabajo asociado con la
construcción de un sitio para Internet o una intranet (un sistema privado). La
mejora de la web puede extenderse desde la creación de la página estática más
sencilla de contenido simple hasta las aplicaciones electrónicas en línea más
complejas (o simplemente "aplicaciones web").

2.2.2. Scrum

Orientado al trabajo en equipo entre cliente y el proveedor, sus integrantes


colaboran con el único objetivo de avanzar gradualmente y lograr la entrega de un
producto de calidad, en tiempos y costos planeados, permite el desarrollo de
sistemas webs y móviles a través de un entorno funcional, colaborativo, flexible y
adaptable al cambio, basado en entregas parciales y regulares del producto final,

24
empresas como ONDA, CANNON y FUJI fueron las pioneras en implementar esta
metodología en sus equipos de trabajo.

Su función se la realiza en tres pasos:

1. Se define el backlog

Se definen los objetivos y alcances esperados del producto a desarrollar,


priorizando de acuerdo a la importancia y el valor que genere con respecto al coste
y a las necesidades del cliente.

2. El proyecto se divide en Sprints

Un sprint es cada una de las fases del proyecto donde se presentan los avances
al cliente, donde el cliente prueba el producto y lo aprueba tal y como está o
sugiere cambios, a estos cambios se les asigna una prioridad y se decide si se
ejecutan en el momento o se mandan a un segundo backlog, es decir a una lista
de pendientes para ejecutarse posteriormente, el gran beneficio de trabajar en
forma colaborativa y repetitiva es que el cliente conoce en la etapa en que se
encuentra su proyecto, y junto con el equipo de trabajo redefine los requerimientos
según el avance del mismo.

3. Después de haber realizado todos los Sprints necesarios.

Se hace la entrega del producto final.

Scrum se utiliza para trabajar de una manera ágil los proyectos en el menor tiempo
y costo posible, es una técnica que mejora la comunicación entre cliente y
proveedor optimizando la productividad de los equipos de trabajo, es una
metodología de trabajo que promueve la innovación, motivación y el compromiso
de los equipos involucrados, además reduce el margen de error y los riesgos del
proyecto siendo el principal objetivo optimizar el retorno de la inversión (Trigas,
2012).

Para desarrollar este proyecto se aplicará la metodología SCRUM “Proyectos


Ágiles”, la cual requiere la entrega de un producto funcional en un tiempo
determinado. Esta metodología ayudará minimizando riesgos, ya que es posible
detectar los problemas o puntos críticos en un tiempo corto, lo que nos servirá
para la toma de decisiones y correctivos necesarios. Se caracteriza por ofrecer
calidad y productividad al implementar, y gracias a los avances tecnológicos se
puede medir diariamente los avances.

25
2.2.3. Laravel

Ruiz-Álvarez (2015) Laravel promueve el progreso mejorando el trabajo con tareas


usuales como enrutamiento, autenticación, almacenamiento en cache, gestión de
sesiones, etc. Una parte de los principales componentes y ventajas de Laravel
son:

Diseñado para crear bajo el diseño MVC (modelo-vista-controlador),


concentrándose en la partición correcta y la modularización del código. Esto
fomenta la colaboración, y además la claridad, el apoyo y la reutilización del
código. Tiene integrado un sistema ORM de mapeo de información relacional
llamado Eloquent, además permite el desarrollo de consultas directas a la base
de información a través de su Query Builder.

Permite la administración de bases de información y el control de tablas de código,


manteniendo un control versiones a través de su sistema de Migraciones. Utiliza
el sistema Blade compuestos de varios diseños para las vistas, el cual utiliza la
memoria cache para acelerar su ejecución. El corte hace que sea simple de hacer
ve usando formatos, legado y segmentos.

Alienta la expansión de la utilidad a través de paquetes o librerías externas. En


este sentido, es fácil incluir paquetes que fomenten el avance de desarrollo de una
aplicación y ahorre una considerable cantidad de tiempo de programación.
Incorpora un intérprete de llamado Artisan que nos ayudará con una cantidad
considerable de rutinas, por ejemplo, la elaboración de componentes de código,
migraciones y base de datos, gestión de rutas, colas, cache y tareas.

GRÁFICO Nº 1 Estructura de Laravel


Elaboración: Luis Eduardo Paz Castillo
Fuente: Laravel

26
Funcionamiento del proyecto:

a. El usuario hace peticiones al sistema web.


b. Estas peticiones son enrutadas y notificadas al controlador.
c. El controlador procesa la petición y decide si muestra una vista al usuario final
o si estas van al modelo el cual es el que hace la consulta a la base de datos
y retorna la informacion necesaria al controlador.
d. El controlador procesa la informacion para enviarla a la vista para luego
mostrarla al usuario final.
e. El controlador es el que decide que datos hay que entregar, a que usuario y
en qué momento.
f. Modelo es quien hace la gestión y manejo de los datos.
g. Vista es la parte visual que termina llegando al navegador para ser visualizado
por el usuario final.

2.2.4. Mvc

GRÁFICO Nº 2 Modelo-Vista-Controlador
Elaboración: Luis Eduardo Paz Castillo
Fuente: MVC

Ruiz-Álvarez (2015) menciona que una idea que se utiliza mucho mientras se
explica el MVC es la "línea del negocio". Es un arreglo de principios que se siguen
en el producto para responder ante diversas circunstancias. En una aplicación el
cliente utiliza el Framework a través de una interfaz, pero cuando se activa la
interfaz para realizar actividades con el programa, se ejecuta una sucesión de
procedimientos que se conocen como la razón del negocio. Esta es una idea de
la mejora de la programación como una regla.

27
a. Modelo

Ruiz-Álvarez (2015) Es la capa donde se trabaja con la información, de esta


manera contendrá componentes para llegar a los datos y además refrescar su
estado. La información que normalmente tendremos en una base de datos, por lo
que en los modelos tendremos cada una de las capacidades que llegarán a las
tablas y harán que la comparación elija, refresque, inserte y así sucesivamente.

b. Vista

Ruiz-Álvarez (2015) Como su nombre nos hace entender, este contiene el código
de nuestra aplicación que producirá la visualización de las interfaces para los
usuarios, entonces indica la codificación con la cual se renderizará los estados de
la aplicación desarrollada en HTML. En las vistas sólo tenemos los códigos HTML
y PHP que nos permiten mostrar la salida.

c. Controlador

Ruiz-Álvarez (2015) Verdaderamente, es una capa que se llena como una


conexión entre perspectivas y modelos, reaccionando a los componentes que
podrían ser necesarios para ejecutar las necesidades de nuestra aplicación. Sin
embargo, su obligación no es controlar específicamente la información, ni
demostrar ningún tipo de rendimiento, sin embargo, es para realizar conexión
entre los modelos y las perspectivas para actualizar.

2.2.5. Framework

Parra-Garofalo (2015) lo definen como una estructura que tiene como objetivo
general ofrecer una funcionalidad definida. Es una forma de trabajar para
desarrollar y/o usar un sistema, ya que nos proporciona una variedad de
herramientas (librerías, utilidades) ajustados a la estructura sólida para promover
la mejora. En general, las estructuras tienen multitud de ingenieros en
comunidades que ofrecen ayuda y simplifican la vida para que nos concentremos
en que ofrecerle al usuario para generarle valor y no desarrollar desde el inicio el
código que ya ha sido probado.

a. Frameworks más usados en el mercado laboral

2.2.6. Aura.
Aura (2017) afirma que la particularidad que presenta en las librerías que tiene
puede ser usada como paquetes independientemente en cualquier código que
tengamos como base.

28
Que el proyecto se centra en torno a una colección de paquetes de bibliotecas
independientes de alta calidad, probados, con versiones semánticas y compatibles
con los estándares, que pueden utilizarse en cualquier base de código.

Cada biblioteca es autónoma y sólo tiene las cosas que necesita para su propósito
principal. Ninguno de los paquetes de la biblioteca depende de ningún otro
paquete. Están desacoplados, no sólo de un marco particular, sino también de
cada uno. Esto significa que los desarrolladores pueden usar todo o un poco del
proyecto como sea requerido.

Es usado por programadores que crean sus librerías propias, así no se contamina
demasiado el proyecto con paquetería innecesaria, se puede exportar estos
paquetes de librerías a otros Framework.

2.2.7. Phalcon

Phalcon (2017) manifiesta que es de código abierto full-stack para lenguaje PHP,
fue escrito como una extensión en lenguaje C, optimizado para tener un tiempo
de respuesta rápido. No es necesario aprender a programar en C para poder
utilizarlo, la funcionalidad total está expuesta en clases PHP listas paras para su
uso.
Diseñado para la rapidez, es con seguridad el Frameworks más rápido existente
hoy día y ofrece un gran porcentaje de los recursos que se necesitan hoy en para
programar un proyecto ágil y fresco. Tras innumerables pruebas este sigue siendo
el Frameworks con más rendimiento a la hora de programar un proyecto web, sea
cual sea su complejidad y complejidad, ofrece todas las características necesarias
para ello, además de un entorno de fácil aprendizaje e intuitivo.

2.2.8. Cakephp

Cakephp (2017) indica que suministra una base fuerte para desarrollar las
aplicaciones, engargantándose de todo, desde la petición se realiza al inicio el
usuario hasta el desarrollo del código HTML final. Siguiendo los fundamentos de
MVC, permite caracterizar y ampliar fácilmente cada una de sus partes,
proporciona una estructura organizacional iniciando en los nombres de los ficheros
y hasta el nombre de las tablas en la base.

Entre sus actualizaciones realizó mejoras en su gestión de las sesiones,


componentes modulares y librerías independientes para mermar el tamaño y
optimizar la personalización de los proyectos.

2.2.9. Zend Framework

Zend (2017) afirma que es una colección de paquetes PHP profesionales con más
de 155 millones de instalaciones. Puede usarse para desarrollar aplicaciones web

29
y servicios utilizando PHP 5.6+, y proporciona código 100% orientado a objetos
usando un amplio espectro de características de lenguaje.
Utiliza Composer como un gestor de dependencias de paquetes; PHPUnit para
probar todos los paquetes; Y Travis CI como un servicio de Integración Continua,
también sigue los estándares de PHP-FIG, e incluye una implementación de PSR-
7 para interfaces de mensajes HTTP (como guiado por Matthew Weier O'Phinney,
líder del proyecto Zend Framework).

Asegura un entorno fiable, robusto y adaptable a cualquier tipo de proyecto, sea


este de cualquier tamaño, pero la curva de aprendizaje es extremadamente difícil.
Configurarlo requiere de un tiempo considerable, y cuando es de instruirse o usarlo
es el más complejo, pero los resultados una vez se lo domina es indiscutiblemente
superior.

2.2.10. Codeigniter

Codeigniter (2017) indica que es un marco de desarrollo de aplicaciones, un


conjunto de herramientas, para personas que construyen sitios web usando PHP.
Su objetivo es permitirle desarrollar proyectos mucho más rápido de lo que podría
si estuviera escribiendo código desde cero, proporcionando un variado conjunto
de bibliotecas para tareas comúnmente necesarias, así como una interfaz sencilla
y una estructura lógica para acceder a estas bibliotecas. Permite concentrarse
creativamente en su proyecto al minimizar la cantidad de código necesario para
una tarea determinada.

2.2.11. Symfony2

Symfony (2017) dice ser un conjunto de componentes PHP, un marco de


aplicaciones Web, una filosofía y una comunidad, todos trabajando juntos en
armonía. El marco líder de PHP para crear sitios web y aplicaciones web.
Construido en la parte superior de los componentes de Symfony que son un
conjunto de componentes desacoplados y reutilizables en los que se construyen
las mejores aplicaciones de PHP, como Drupal, phpBB y eZ Publish.

Cuenta con un variado agregado de componentes de gran reutilización, tiene


una comunidad muy activa que no se extingue ni se limita en aportar ideas o
codificación al desarrollo de progresos a futuras actualizaciones. Es versátil y
repleto de componentes reutilizables e independiente en su interior. Tal es su
eficiencia que usa un sin número de elementos para mantenerse a flote, algunos
de esos se usan para levantar una de las mayores plataformas de plantillas en
internet “Twig”, cuenta con una licencia gratuita de uso libre del MIT.

30
2.2.12. Laravel

Laravel (2017) es el Frameworks más implantado en las empresas en el mercado


de desarrollo, su fama reside en que la curva de aprendizaje es corta por lo que
es extremadamente fácil de aprender, además de que le favorece su rapidez al
momento de programar, una vez dominado este Frameworks no importa si el
tamaño del proyecto es de proporciones desmesuradas esta tarea resulta fácil de
realizar.

Cuenta con su propio motor de plantillas que tiene por nombre Blade, con el cual
facilita el desarrollo de código sobre sus plantillas directamente, ahorrando
posibles líneas innecesarias aligerando el trabajo, facilitando las tareas de
autenticación, enrutamiento, sesiones y el almacenamiento en caché haciendo de
la programación una experiencia agradable y creativa.

Laravel es la combinación de las partes más destacables de otros framework


incluyendo los implementados en otros idiomas haciéndolo accesible, potente
proporcionando herramientas robustas muy necesarias para las aplicaciones
grandes, tiene contenedores de control, soporte de pruebas de unidad integrado
y sistema de migración expresiva.

Por todas estas virtudes frente a otros framework que existen en el mercado el
Departamento de Gestión tecnológica de la Información en su División Centro de
Computo de la Universidad de Guayaquil, requiere que todos los sistemas web
que sean desarrollados para las diferentes unidades académicas y administrativas
estén bajo esta plataforma.

GRÁFICO Nº 3 Laravel y su funcionalidad


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

31
2.2.13. Xampp

GRÁFICO Nº 4 Panel de Control de Xampp


Elaboración: Luis Eduardo Paz Castillo
Fuente: Apache Friends

Apache (2017) menciona que el objetivo de XAMPP es crear una distribución fácil
de instalar y manejar para programadores que están iniciando en el mundo de la
programación web. XAMPP viene configurado por defecto con todas las opciones
activadas. Es de uso gratuito tanto para usos comerciales como no comerciales.
En caso de usar XAMPP comercialmente, hay que asegurarse de que cumplir con
las licencias del productos. Actualmente XAMPP tiene instaladores para Windows,
Linux y OS X.

2.2.14. Apache

Canepa (2016) menciona que es un software que sirve para levantar localmente
aplicaciones web asignando puertos específicos para ello. Es el servidor web con
mayor número de instalaciones a nivel mundial al ser un proyecto de código
abierto, gratuito, multiplataforma y robusto que sobresale por su seguridad y
rendimiento.
Atiende eficientemente un gran número de peticiones HTTP, incluyendo la
ejecución multitarea ya que soporta peticiones simultaneas, restringe el acceso a
los ficheros que se requieran, gestiona las solicitudes de inicio de sesión, filtra las
peticiones según sean el origen de estas, maneja errores por páginas no
encontradas informando al usuario, redirige a paginas por defecto, gestiona la
información que transmite comunicándose con el navegador.

32
GRÁFICO Nº 5 Funcionalidad de Apache
Elaboración: Luis Eduardo Paz Castillo
Fuente: Apache Friends

2.2.15. Base de datos Mysql

GRÁFICO Nº 6 Funcionalidad de MySQL


Elaboración: Luis Eduardo Paz Castillo
Fuente: MySql

33
MySql (2017) afirma que "es la base de datos de código abierto más conocida del
planeta, potenciando el conocimiento financiero de aplicaciones de bases de datos
electrónicas adaptables e incorporadas, incluyendo cinco de los cinco principales
sitios de élite y fiabilidad. Ayuda especializada para crear, enviar y tratar con sus
aplicaciones siendo un espectacular gestor de bases de datos que hace alusión a
la estructura de un modelo social, los datos que maneja dependiendo del proyecto
pueden ser sencillos como complejos.

2.3. Fundamentación Legal


2.3.1. Decreto 1014

2.3.2. Sobre el uso del Software Libre

Art. 1: Establecer como política pública para las entidades de administración


publica central la utilización del Software libre en sus sistemas y equipamientos
informáticos.

Art. 2: Se entiende por software libre, a los programas de computación que se


pueden utilizar y distribuir sin restricción alguna, que permitan el acceso a los
códigos fuentes y que sus aplicaciones puedan ser mejoradas.

Estos programas de computación tienen las siguientes libertades:

- Utilización de programa con cualquier propósito de uso común.


- Distribución de copias sin restricción alguna.
- Estudio y modificación de programa (Requisito: código fuente disponible)
- Publicación del programa mejorado (Requisito: código fuente disponible)

2.3.3. Ley de propiedad intelectual

ART. 1. El Estado ecuatoriano reconoce, regula y garantiza la propiedad


intelectual adquirida de conformidad con la ley, las decisiones de la comisión de
la comunidad Andina y los convenios internacionales vigentes en el Ecuador…

En cuanto a lo que tiene que ver con leyes de programas de ordenadores se citan
los siguientes artículos:

Art. 28. Los programas de ordenador se consideran obras literarias y se protegen


como tales. Dicha protección se otorga independientemente de que hayan sido
incorporados de un ordenador y cualquiera sea la forma en que estén expresados,
ya sea en forma legible por el hombre (código fuente) o en forma legible por
máquina (código objeto), ya sean programas operativos y programas aplicativos,
incluyendo diagramas de flujo, planos, manuales de uso, y en general, aquellos
elementos que conformen la estructura, secuencia y organización del programa.

34
Art. 29. Es titular de un programa de ordenador, el productor, esto es la persona
natural o jurídica que toma la iniciativa y responsabilidad de la realización de la
obra. Se considerará titular, salvo prueba en contrario, a la persona cuyo nombre
conste en la obra o sus copias de la forma usual.

Dicho titular está además legitimado para ejercer en nombre propio los derechos
morales sobre la obra, incluyendo la facultad para decidir sobre su divulgación.

El productor tendrá el derecho exclusivo de realizar, autorizar o prohibir la


realización de modificaciones o versiones sucesivas del programa, y de
programas derivados del mismo.

Las disposiciones del presente artículo podrán ser modificadas mediante acuerdo
entre los autores y el productor.

Art. 30. La adquisición de un ejemplar de un programa de ordenador que haya


circulado lícitamente, autoriza a su propietario a realizar exclusivamente:
a) Una copia de la versión del programa legible por máquina (código objeto)
con fines de seguridad o resguardo;
b) Fijar el programa en la memoria interna del aparato, ya sea que dicha
fijación desaparezca o no al apagarlo, con el único fin y en la medida necesaria
para utilizar el programa; y,
c) Salvo prohibición expresa, adaptar el programa para su exclusivo uso
personal, siempre que se limite al uso normal previsto en la licencia.
El adquirente no podrá transferir a ningún título el soporte que contenga el
programa así adaptado, ni podrá utilizarlo de ninguna otra forma sin autorización
expresa, según las reglas generales.

Se requerirá de autorización del titular de los derechos para cualquier otra


utilización, inclusive la reproducción para fines de uso personal o el
aprovechamiento del programa por varias personas, a través de redes u otros
sistemas análogos, conocidos o por conocerse.

2.3.4. Ley orgánica de educación superior (loes)

Normas de control interno para las entidades, organismos del sector público
y de las personas jurídicas de derecho privado que dispongan de recursos
públicos.

2.3.5. 410 Tecnología de la Información

2.3.6. 410-04 Políticas y Procedimientos

La máxima autoridad de la entidad aprobará las políticas y procedimientos que


permitan organizar apropiadamente el área de tecnología de información y asignar
el talento humano calificado e infraestructura tecnológica necesaria.

35
La unidad de tecnología de información definirá, documentará y difundirá las
políticas, estándares y procedimientos que regulen las actividades relacionadas
con tecnología de información y comunicaciones en la organización, estos se
actualizarán permanentemente e incluirán las tareas, los responsable de su
ejecución, los procesos que están normando, así como, las sanciones
administrativas a que hubiere lugar si no se cumplieran.

Temas como la calidad, seguridad, confidencialidad, controles internos, propiedad


intelectual, firmas electrónicas y mensajería de datos, legalidad del software, entre
otros, serán considerados dentro de las políticas y procedimientos a definir, los
cuales, además, estarán alineados con las leyes conexas emitidas por los
organismos competentes y estándares de tecnología de información.

2.3.7. 410-06 Administración de Proyectos Tecnológicos

La unidad de tecnología de información definirá mecanismos que faciliten la


administración de todos los proyectos informáticos que ejecuten las diferentes
áreas que conformen dicha unidad…

2.3.8. Reglamentos a la ley de comercio electrónico, firmas electrónicas y


mensajes de datos.

Art. 21.- De la seguridad en la prestación de servicios electrónicos.-La prestación


de servicios electrónicos que impliquen el envío por parte del usuario de
información personal, confidencial o privada, requerirá el empleo de sistemas
seguros en todas las etapas del proceso de prestación de dicho servicio. Es
obligación de quien presta los servicios, informar en detalle a los usuarios sobre
el tipo de seguridad que utiliza, sus alcances y limitaciones, así como sobre los
requisitos se seguridad exigidos legalmente y si el sistema puesto a disposición
del usuario cumple con los mismos. En caso de no contar con seguridades se
deberá informar a los usuarios de este hecho en forma clara y anticipada previos
el acceso a los sistemas o a la información e instruir claramente sobre los posibles
riesgos en que puede incurrir por la falta de dichas seguridades.

Se consideran datos sensibles del consumidor sus datos personales, información


financiera de cualquier tipo como números de tarjetas de crédito, o similares que
involucren transferencias de dinero o datos a través de los cuales puedan
cometerse fraudes o ilícitos que le afecten.

2.4. Pregunta científica a contestarse

¿Un sistema web de registro de órdenes de trabajo ayuda a reducir el tiempo en


la entrega de trabajos?
¿Optimizaría y ayudaría a administrar la información de las órdenes de trabajo en
el sistema web en conformidad con las regulaciones legales?

36
¿La disminución del tiempo en la entrega de trabajos y elaboración de reportes
mejorara con la disponibilidad y administración de la información a través del
sistema Web?

¿Disminuiría el tiempo de respuesta en la búsqueda de información en las órdenes


de trabajo si estas realizan las consultas en el sistema web?

¿La disminución del volumen de documentación archivada físicamente, mejorará


la administración organizacional del personal de cada área?

2.5. Definiciones conceptuales

2.5.1. Internet La red que integra todas las redes, inventada en 1970 a mediados
de década, con la protección de DARPA, quien Inició un programa de
investigaciones avanzadas para unir a diversas redes de sistemas para
intercambio de paquetería, permitiendo así a los ordenadores relacionarse
entre sí en estas redes para transmitir datos de forma sencilla.

2.5.2. Php Preprocesador de hipertexto, es un lenguaje de sintaxis simple y


sencilla, similar a otros lenguajes. Es multiplataforma lo que lo hace un
lenguaje ideal para aprender a desarrollar aplicaciones web complejas.
PHP posee diferentes módulos y un gran número de librerías. Las mismas
que están desarrolladas en código libre, por lo que el programador tiene
una impresionante gama de herramientas gratuitas para trabajar.

2.5.3. Html5 Hyper Text Markup Language, adaptación 5 es la quinta corrección


del dialecto HTML. Esta nueva forma, y en conjunto con CSS3, caracteriza
los nuevos puntos de referencia de avance web para diseñar la interfaz del
sistema.

2.5.4. Java script Es un lenguaje con numerosos resultados concebibles, usado


para hacer pequeños proyectos que luego se incrustan en una página y
luego estos en proyectos más grandes. Con Java Script podemos se
puede interactuar con los usuarios haciendo más amigable el sistema.

2.5.5. Usuario web Persona o personas que a través de una conexión a internet
y con un dispositivo móvil u ordenador accede a uno o varios sistemas
web.

2.5.6. Super-administrador Persona o personas que tienen acceso completo a


todas las opciones del sistema, comúnmente este rol se lo da jefes
departamentales o encargados del área de sistemas.

37
2.5.7. Browser Es una aplicación que se instala en un dispositivo móvil u
ordenador, utilizado para acceder a las páginas web por medio de una url.

2.5.8. Cargar archivo vía web Seleccionar un archivo ya sea foto, documento,
audio, video, etc. desde una página para que sea transferida a su lugar de
destino.

2.5.9. Ftp Protocolo de transferencia de archivos, es un método muy utilizado


para subir el sistema desarrollado a un servidor desde donde se ejecutará
a través de internet o localmente.

2.5.10. Http Es un protocolo de transporte de hipertexto el cual se utiliza para la


transferencia de información entre el cliente y el servidor.

2.5.11. Url Localizador Uniforme de Recursos, o dirección en una página de


Internet, se usa para acceder a un sistema que reposa en un servidor
externo, cada página de internet tiene una dirección única en la Web.

2.5.12. Motor de búsqueda Es un sistema web con el cual se puede acceder a


sitios relacionados con una palabra clave o frase que esté buscando,
comúnmente se lo puede hacer desde cualquier navegador.

2.5.13. Página web Una página Web es un archivo escrito en lenguaje HTML con
php, java script, etc. pueden ser prácticamente de cualquier tamaño y
mostrar mucho contenido textual o multimedia (fotos, videos, audios).

2.5.14. WWW Representa una red de sistemas distribuidos en documentación en


hipertextos con el cual se puede acceder mediante el internet.

38
CAPÍTULO III

3. PROPUESTA TECNOLÓGICA

Este proyecto busca optimizar el registro, control y seguimiento de las órdenes de


trabajo, generadas por las diferentes unidades académicas y administrativas de la
Universidad de Guayaquil, permitirá a la Jefatura Editorial E Imprenta responder a
los trabajos recibidos con mayor agilidad. También facilitará el control del
inventario y la elaboración de reportes de estado en que se encuentra las órdenes
para poder responder a las consultas realizadas por los interesados vía telefónica
o atendiéndolos en persona.

Con esta propuesta se beneficiará a toda la comunidad universitaria, este sistema


web agilizará la entrega de trabajos que soliciten las diferentes unidades
académicas y administrativas lo que permitirá que estas respondan
satisfactoriamente en sus labores correspondientes.

Al estar desarrollado en un ambiente web tendrá la versatilidad de ser consultado


desde cualquier lugar, lo que le permitirá al Jefe del área ingresar desde cualquier
dispositivo y observar e informar a las autoridades sobre algún trabajo en
particular.

Además, se podrán ingresar las órdenes de trabajo anteriores que se encuentran


archivadas físicamente en perchas, de esta manera crear un histórico de labores
realizadas en esta Jefatura y poder obtener una estadística de los trabajos
realizados.

El coordinador de cada área podrá controlar y reportar el flujo de tiempo con el


cual se ha desarrollado una orden de trabajo y el consumo de insumos y
suministros utilizados.

3.1. Análisis de Factibilidad.


El proyecto nace a partir del análisis de problemas que se presentan sobre el
registro, control y seguimiento de las labores internas en la Jefatura Editorial E
Imprenta de la Universidad de Guayaquil.

El sistema web está focalizado para la administración de la información de las


ordenes de trabajo, y el seguimiento de las labores que se desarrollan en cada
una de ellas, los resultados de la entrega de trabajos terminados que se

39
evidencian en los informes realizados por coordinación general, demuestra que
estos presentan demoras muy significativas desde el ingreso hasta su entrega.

Al manejar volúmenes grandes de información de trabajos a toda la Universidad


de Guayaquil, frecuentemente dificulta tener un control eficaz si se maneja la
información de manera manual, misma que ha sido archiva desde que la jefatura
inició sus actividades en la Casona-Universitaria hasta la actualidad, esta
documentación que tienen almacenada ha estado expuesta constantemente a
diversos factores que han provocado su deterioro, como manipulación constante,
productos de limpieza, gases de productos químicos industriales, el tiempo, la
humedad en el ambiente, etc.

El sistema web realizará el registro, control y seguimiento de las labores


solicitadas por las diferentes unidades administrativas y académicas en la
universidad por medio de las órdenes de trabajo, ayudando a gestionar y a
distribuir la información a todo el personal en las entregas a los servidores públicos
en la búsqueda del archivo físico de la orden de trabajo y sus anexos, con el
módulo de inventario facilitaría la entrega de insumos y suministros sin retrasos
por las peticiones manuales que se entregaban.

3.1.1. Factibilidad Operacional

El proyecto busca solucionar las necesidades en la actualidad de forma rápida, la


solución planteada es crear un medio por el cual se registre, controle y se dé
seguimiento a las órdenes de trabajo que ingresan a la Jefatura Editorial E
Imprenta.

Los funcionarios que laboran en la Editorial tendrán la posibilidad de ingresar al


sistema vía web para registrar las órdenes de trabajo que ingresan diariamente,
facilitando el flujo de información a los funcionarios de todas las áreas.

Adicionalmente se podrá controlar el stock del inventario de insumos y


suministros, sin la necesidad de que el usuario tenga que revisar documentación
física o archivos en Excel para saber qué cantidad hay en existencia para certificar
que la orden que ingresa es viable, disminuyendo el tiempo en entrega del material
y agilizando la salida del trabajo.

Se podrá generar reportes de estado de las órdenes de trabajo ingresadas de una


forma rápida, sin depender de la documentación física, como normalmente se lo
realiza.
El grado de aprendizaje de los funcionarios que laboran en la Editorial será alto,
gracias a que se realizaran las mismas tareas un número impreciso de veces
diariamente, además de que la interfaz amigable del sistema web le facilitará al

40
usuario la realización de sus actividades de una manera intuitiva por lo se podrán
adaptar a su manejo en un lapso corto de tiempo.

3.1.2. Factibilidad Técnica


El sistema web, estará programado en lenguaje PHP, en la actualidad es uno de
los lenguajes más utilizados para el desarrollo de sistemas web, es sencillo de
utilizar por medio del Frameworks Laravel, cuenta con diversa información para
los desarrolladores y soporte por medio de grandes comunidades en la web, los
cuales contribuyen con conocimiento para disipar dudas que vallan formulándose
en la elaboración de cualquier tipo de proyectos sin importar la complejidad que
tenga.

El desarrollo cubre los parámetros de la arquitectura que se siguen en el área de


la Dirección de Gestión tecnológica de la Información de la Universidad de
Guayaquil, sin embargo este proyecto será implementado en un hosting externo,
se lo desarrollo siguiendo estos parámetros por si en un futuro este sistema es
migrado a sus servidores de esta manera los módulos pueden ser reutilizados. En
el cuadro No. 3 se pueden visualizar los detalles y características del hosting
contratado.

CUADRO N. 3
Plan de hosting contratado
Plan de Hosting Contratado
Nombre: Gold PHP
Servicios HD
Almacenamiento HD de espacio Ilimitado
Servicios Memoria
Server - Memoria RAM 128GB
Sistema Operativo Centos
Otras Características
Uso del FTP Ilimitado
Base de Datos MySql Ilimitado
Selector de Versiones PHP: 5.3, 5.4, 5.5, 5.6 , 5.7 , 6.0, SÍ
7.0 - Versión del servidor: 10.0.21 – MariaDB
Características Avanzadas
Servidor Apache SÍ
Elaboración: Luis Eduardo Paz Castillo
Fuente: Ecuaweb

3.1.3. Factibilidad Legal

La automatización del registro, control y seguimiento de las órdenes de trabajo,


está programado con herramientas de código abierto que están disponibles en

41
internet y que actualmente tienen soporte por un tiempo más prolongado. No se
incumple con ninguna normativa legal y se adapta a los mandatos constitucionales
y normativas establecidas en el código de propiedad intelectual y en el Decreto
1014 aprobado y firmado por el Eco. Rafael Correa expresidente del Ecuador.

3.1.4. Factibilidad Económica

Para el desarrollo de este proyecto se consideraron diversos gastos, lo cuales se


detallan a continuación:

a. Egresos de Software

El tipo de software que se utiliza es de código abierto y se puede descargar


gratuitamente por medio de internet directamente en la página de los
desarrolladores, por lo que Laravel, Mysql, Xampp, Composer y navegadores
Chrome, Mozilla, Tor Project, Internet Explorer y Edge no representan costo
alguno para este proyecto.

b. Egresos de Hardware

En el cuadro No. 4 se detalla la infraestructura tecnológica física utilizada


para el desarrollo de este proyecto, equipo con la capacidad necesaria para
levantar un servidor de pruebas (Xampp), conectarse a 2 monitores
externos para ampliar el escritorio de trabajo, y sincronizarse con el hosting
vía FTP para subir constantemente los avances que se va teniendo en el
desarrollo del sistema web, así poder realizar las pruebas necesarias en
los navegadores antes mencionados, para medir el tiempo de respuesta y
la interpretación de la codificación realizada en cada uno.

CUADRO N. 4
Detalles de egresos en hardware
Valor Valor
Hardware
Unitario Total
Laptop (Procesador I7 7ma Gen, Ram 8Gb,
Disco Duro SSD 500Gb, S.O. Windows 10, Wifi $1200,00 $1200,00
AC)
Egreso Total $1200,00
Elaboración: Luis Eduardo Paz Castillo
Fuente: Laptop Dell

c. Egresos Varios

Los recursos utilizados para el desarrollo de este proyecto se detallan en el cuadro


No. 5 con sus respectivos valores.

42
CUADRO N. 5
Detalle de egresos varios
Software Subtotal Total
Internet $110,00
Comidas $160,00
Movilización $190,00
Insumos y Suministros $500,00
$1130.00
Varios $170,00
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

d. Recurso Humano
Para desarrollar el proyecto fue necesario contar con recurso humano que cumpla
con el perfil apropiado para trabajar en el proyecto, como se puede observar en el
cuadro No. 6

CUADRO N. 6
Egreso de RRHH
Valor por Valor
Personal
Persona Total

1. Programador en PHP, Laravel y Mysql $900,00 $900,00

Egreso Total $900,00


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

e. Resumen total de egresos


En el cuadro No. 7 se puede observar un resumen del costo económico total del
proyecto.

CUADRO N. 7
Detalle de egresos totales

Egresos Subtotal Total


1. Software $0,00
2. Hardware $1200,00
3. RRHH $900,00
4. Hosting $299.99
$3529,99
5. Varios $1130,00
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

43
3.2. Diagrama de caso de uso de Swot.

SWOT Registro, identificación y


autenticación de usuarios.
Iniciar sesión
Cerrar Sesión
Consultar
Materiales
Modificar
Categoría de Materiales
Registrar
Materiales
Reporte y visualización de
Abastecimiento de Materiales

Registrar
Abastecimiento de Materiales

Reporte y visualización de
Categoría de Materiales
Modificar
Materiales

Registrar
Categoría de Materiales
Visualización de avance de
Órdenes de trabajo

Registrar
Órdenes de trabajo
Registrar Rol a
Usuarios

Modificar Rol de usuarios

Registro de
Avances de OT
| Modificar
Estado de OT

Reporte y visualización de
Proveedores
Registrar
Proveedores

Reporte y visualización de
Clientes

Modificar
Clientes
Registrar
Clientes

Modificar
Proveedores

GRÁFICO Nº 7 Diagrama de caso de uso de Swot


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
El GRÁFICO N. 7 muestra el acceso que tiene cada uno de los roles de usuarios
en Swot. Cada rol de usuario puede tener parte o los mismos permisos que otro.

44
Caso de uso iniciar sesión

Iniciar sesión

Cerrar sesión

GRÁFICO Nº 8 Diagrama de caso de uso iniciar sesión


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto

45
Descripción del caso de uso
Caso de uso: Iniciar sesión
Bodeguero, coordinador general, administrador,
Actores: coordinador de diseño, recepcionista, gestionador externo,
coordinador de taller, visitantes
Propósito: Ingreso al sistema con validaciones
Precondiciones: Es necesario estar previamente registrado
Se valida el usuario, dependiendo de su rol tendrá acceso a
Flujo Principal: las opciones correspondientes
Excepciones: Se valida el usuario, si es este no ingresa los datos
correctamente se vuelve a pedir el ingreso de los datos.

Caso de uso gestión de materiales

SWOT

Consultar
Materiales
Modificar
Categoría de Materiales

Registrar
Materiales
Reporte y visualización de
Abastecimiento de Materiales

Registrar
Abastecimiento de Materiales

Reporte y visualización de
Categoría de Materiales
Modificar
Materiales

Registrar
Categoría de Materiales

GRÁFICO Nº 9 Diagrama de caso de uso gestión de materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Gestión de materiales
Actores: Bodeguero
Consulta, registro, modificación, visualización y reporte de
Propósito: materiales
Precondiciones: Es necesario estar previamente logueado
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de los materiales
en bodega
Excepciones: Se valida los datos ingresados, si estos no son correctos se
vuelve a pedir el ingreso de la información nuevamente.

46
Caso de uso gestión de órdenes de trabajo en coordinación

SWOT
Visualización de avance de
Órdenes de trabajo

Registrar
Órdenes de trabajo
Modificar
Avances de OT

GRÁFICO Nº 10 Diagrama de caso de uso gestión de órdenes de trabajo en


coordinación
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Gestión de órdenes de trabajo
Actores: Coordinador general
Propósito: Registro, modificación y visualización de órdenes de trabajo
Precondiciones: Es necesario estar previamente logueado
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de las órdenes de
trabajo
Se valida los datos ingresados, si estos no son correctos se
Excepciones:
vuelve a pedir el ingreso de la información nuevamente.

Caso de uso gestión de órdenes de trabajo en taller


SWOT

Registro de
Avances de OT
Modificar
Estado de OT

GRÁFICO Nº 11 Diagrama de caso de uso gestión de órdenes de trabajo en


taller
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Gestión de órdenes de trabajo en taller
Actores: Coordinador de taller
Registro de avance y modificación de estado de las
Propósito:
órdenes de trabajo
Precondiciones: Es necesario estar previamente logueado

47
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de las órdenes
de trabajo en taller
Se valida los datos ingresados, si estos no son correctos
Excepciones:
se vuelve a pedir el ingreso de la información nuevamente.

Caso de uso gestión de órdenes de trabajo en gestión externa

SWOT Modificar
Estado de OT

GRÁFICO Nº 12 Diagrama de caso de uso gestión de órdenes de trabajo en


gestión externa
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Gestión de órdenes de trabajo en gestión externa
Actores: Gestionador externo
Modificación de estado de las órdenes de trabajo por
Propósito:
trabajos aprobados
Precondiciones: Es necesario estar previamente logueado
La acción a realizarse modifica el estado de las órdenes de
Flujo Principal:
trabajo en gestión externa
Se valida los datos ingresados, si estos no son correctos se
Excepciones:
vuelve a pedir el ingreso de la información nuevamente.

Caso de uso gestión de órdenes de trabajo en recepción


SWOT
Reporte y visualización de
Proveedores
Registrar
Proveedores

Reporte y visualización de
Clientes

Modificar
Clientes
Registrar
Clientes

Modificar
Proveedores

GRÁFICO Nº 13 Diagrama de caso de uso gestión de órdenes de trabajo en


recepción
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto

48
Descripción del caso de uso

Caso de uso: Gestión de órdenes de trabajo en recepción


Actores: Recepcionista
Registro, modificación, visualización y reportes de clientes
Propósito:
y proveedores
Precondiciones: Es necesario estar previamente logueado
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de las órdenes de
trabajo en recepción
Se valida los datos ingresados, si estos no son correctos se
Excepciones:
vuelve a pedir el ingreso de la información nuevamente.

Caso de uso gestión de órdenes de trabajo en diseño

SWOT

Registrar
Avances de OT
Modificar
Estado de OT

GRÁFICO Nº 14 Diagrama de caso de uso gestión de órdenes de trabajo en


diseño
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto

Descripción del caso de uso

Caso de uso: Gestión de órdenes de trabajo en diseño


Actores: Coordinador de diseño
Propósito: Registro y modificación de órdenes de trabajo
Precondiciones: Es necesario estar previamente logueado
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de las órdenes de
trabajo en diseño
Se valida los datos ingresados, si estos no son correctos se
Excepciones:
vuelve a pedir el ingreso de la información nuevamente.

49
Caso de uso gestión de usuarios en Swot

SWOT
Registrar Rol a usuarios

Modificar información de
usuarios

GRÁFICO Nº 15 Diagrama de caso de uso gestión de usuarios en Swot


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Gestión de usuarios en Swot
Actores: Administrador
Propósito: Registro y modificación de información de usuarios
Precondiciones: Es necesario estar previamente logueado
Dependiendo de la acción a realizarse se escogerá la
Flujo Principal: opción disponible en el rol para la gestión de las órdenes
de trabajo en diseño
Se valida los datos ingresados, si estos no son correctos
Excepciones:
se vuelve a pedir el ingreso de la información nuevamente.

Caso de uso usuarios visitantes

SWOT

Visualización de avance de
Órdenes de trabajo

GRÁFICO Nº 16 Diagrama de caso de uso usuarios visitantes


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto
Descripción del caso de uso
Caso de uso: Usuarios visitantes
Actores: Visitantes
Propósito: Visualización del avance de las órdenes de trabajo
Precondiciones: Es necesario estar previamente logueado
La opción disponible en el rol visitante para la gestión de las
Flujo Principal:
órdenes de trabajo en diseño
Se valida los datos ingresados, si estos no son correctos
Excepciones:
se vuelve a pedir el ingreso de la información nuevamente.

50
3.3. Diagrama de Secuencia

GRÁFICO Nº 17 Diagrama de secuencia


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del Proyecto

EL Gráfico N. 17 muestra la interacción que existe en Swot a través del tiempo,


donde se puede apreciar los mensajes intercambiables entre los objetos. Los
objetos mostrados con líneas discontinuas verticales intervienen en el escenario
con los mensajes pasados entre los objetos con flechas horizontales.

3.4. Etapas de la metodología del proyecto

El proyecto consta de 6 etapas, al finalizar se obtendrá una interfaz de registro de


órdenes de trabajo, otra donde se controlará el inventario y una última donde se
le da seguimiento a los costos de utilización de los diferentes insumos y
suministros que se utilizan en los diferentes trabajos.

51
A continuación siguiendo el esquema de desarrollo de la metodología Scrum se
procede a realizar y documentar los Sprints para cumplir con la elaboración del
proyecto:

3.4.1. Sprint No. 0

1. Se realiza el levantamiento de los requerimientos del sistema,


recolección de toda información concerniente a las órdenes de trabajo,
flujo del inventario y documentación generada de los mismos.

2. Se descarga el framework y las herramientas necesarias para


desarrollo del proyecto en la maquina:

a. Xampp,
b. Laravel,
c. Artisan,
d. Mysql,
e. Composer

3. Se definición de tipos de usuarios, los cuales utilizarán el sistema:


Tipos de usuarios y rol:

a. Rol 0 Jefe Editorial E Imprenta,


b. Rol 1 Coordinador General,
c. Rol 2 Bodeguero,
d. Rol 3 Recepcionista,
e. Rol 4 Gestión Externa

3.4.2. Sprint No. 1

a. Instalación en la carpeta raíz de Xampp (c:\xampp\htdocs\laravel5) del


Framework Laravel 5, que será levantado con los módulos de Apache y
Mysql, se realiza la prueba de ejecución y se visualiza el index que trae por
defecto como se puede apreciar en el gráfico No. 1.

52
GRÁFICO Nº 18 Framework Laravel en funcionamiento desde localhost
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

b. Se desarrolla el interfaz que tendrá de base el sistema web, con su


respectivo Menú y Sub-menú como se detalla a continuación y se visualiza
el resultado en el gráfico No. 2.

Menú y Submenú:
a. Menú Estadísticas
- Inventario
b. Menú Inventario
- Sub-menú Materiales
- Sub-menú Categorías
c. Menú Abastecimiento
- Sub-menú Ingresos
- Sub-menú Proveedores
d. Menú Órdenes de Trabajo
- Sub-menú OT
- Sub-menú Clientes
- Progreso
- Gestión
e. Menú RRHH
- Sub-menú Usuarios

53
f. Enlace externo Office 365
g. Enlace externo SIUG
h. Enlace externo Quipux
i. Enlace externo Descargas Repositorio U.G.
j. Acerca de Proyecto SWOT

GRÁFICO Nº 19 Interfaz principal de SWOT


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

3.4.3. Sprint No. 2

Se desarrolla la interfaz de registro de las órdenes de trabajo y clientes, como se


puede apreciar en las imágenes No. 3 y 4 con las siguientes opciones y
características:

a. Desarrollo de Página: Nueva Orden de Trabajo

1. Solicitante (esta opción realizará la búsqueda del cliente que está registrado
previamente en el sistema)

2. Tipo Orden de Trabajo (se despliega opciones a escoger)


- Seleccione uno
- Orden de trabajo
- Orden de trabajo de títulos
- Orden de trabajo interna
3. Serie (se ingresará la serie de las orden de trabajo recibida)

54
4. Número (se ingresará el número correspondiente a la orden)
5. Autoridad Responsable (se despliega opciones a escoger)
- Seleccione uno
- Rectorado
- Vicerrectorado de Investigación, Gestión del conocimiento y Posgrado
- Vicerrectorado de Internalización y Movilidad Académica
- Vicerrectorado de Formación Académica y Profesional
- Vicerrectorado de Bienestar Estudiantil
- Gerencia Administrativa
- Dirección Administrativa
- Secretaría General
- Editorial E Imprenta
6. Unidad o Dependencia (esta opción mostrará múltiples opciones a escoger)
- Seleccione uno
- Apug
- Contabilidad
- Coordinación de Comunicación y Difusión de la Información
- Coordinación General de Planificación, Acreditación y Evaluación
Institucional
- Dirección Administrativa
- Dirección de Admisión y Nivelación
- Dirección de Atención Integral
- Dirección de Cooperación Nacional e Internacional
- Dirección de Formación Universitaria
- Dirección de Gestión de Proyectos Internacionales
- Dirección de Gestión del Personal Académico
- Dirección de Gestión Social del Conocimiento
- Dirección de Gestión Tecnológica de la Información
- Dirección de Inclusión de Estudiantes y Graduados
- Dirección de Infraestructura y Obras Universitarias
- Dirección de Investigación
- Dirección de Movilidad Académica
- Dirección de Posgrado
- Dirección de Talento Humano
- Dirección Financiera
- Dirección General de Planificación, Acreditación y Evaluación Institucional
- Facultad de Arquitectura y Urbanismo

55
- Facultad de Ciencias Administrativas
- Facultad de Ciencias Agrarias
- Facultad de Ciencias del Desarrollo
- Facultad de Ciencias Económicas
- Facultad de Ciencias Matemáticas y Físicas
- Facultad de Ciencias Médicas
- Facultad de Ciencias Naturales
- Facultad de Ciencias Odontológicas
- Facultad de Ciencias Psicológicas
- Facultad de Ciencias Químicas
- Facultad de Comunicación Social
- Facultad de Educación Física, Recreación y Deportes
- Facultad de Filosofía, Letras y Ciencias de la Educación
- Facultad de Ingeniería Industrial
- Facultad de Ingeniería Química
- Facultad de Jurisprudencia, Ciencias Sociales y Políticas
- Facultad de Medicina Veterinaria y Zootecnia
- Focsu
- Gerencia Administrativa
- Jefatura de Acreditación de carreras y programas
- Jefatura de Acreditación Institucional
- Jefatura de Activos Fijos
- Jefatura de Adquisiciones
- Jefatura de Análisis, Desarrollo e Implementación de Sistemas
- Jefatura de Asesoría Jurídica y Contratación Pública
- Jefatura de Asuntos Legales y Laborales
- Jefatura de Capacitación de desempleo
- Jefatura de Control de Nóminas
- Jefatura de Control y Seguridad
- Jefatura de Desarrollo Normativo
- Jefatura de Fiscalización y Construcción
- Jefatura de Infraestructura
- Jefatura de Infraestructura Informática
- Jefatura de Patrocinio
- Jefatura de Planificación de Obras
- Jefatura de Planificación y proyectos de Inversión
- Jefatura de Presupuesto

56
- Jefatura de Procesos y Calidad de la Gestión Institucional
- Jefatura de Proveeduría
- Jefatura de Seguimiento y Gestión de la Información
- Jefatura de Seguridad y Salud Ocupacional
- Jefatura de Selección y Admisión
- Jefatura de Servicios Generales
- Jefatura de Sustanciación
- Jefatura de Tesorería
- Jefatura Editorial E Imprenta
- Procuraduría Síndica
- Rectorado
- Secretaría General
- Vicerrectorado de Bienestar Estudiantil
- Vicerrectorado de Formación Académica y Profesional
- Vicerrectorado de Internalización y Movilidad Académica
- Vicerrectorado de Investigación, Gestión del conocimiento y Posgrado.
7. Número de Oficio (permitirá ingresar la nomenclatura y el número correspondiente
al oficio)
8. Resumen de oficio (permitirá ingresar el detalle del oficio)
9. Nombre de archivo adjunto (permitirá ingresar el título correspondiente al archivo
adjunto)
10. Medio de entrega (se mostrará opciones a escoger)
- CD
- Correo
- Pendrive
- Tarjeta de memoria
11. Tipo de Archivo (se mostrará opciones del tipo de archivo a escoger)
- Word
- Pdf
- Excel
- Fotografía
- Adobe Illustrator
- Adobe Photoshop
- Adobe Indesign
12. Muestra impresa adjunta (se mostrará opciones a escoger)
- Si
- No

57
13. Tipo de acabado requerido (se mostrará opciones a escoger)
- Barnizado
- Laminado
- Otro
14. Diseñador(es) (se ingresará el o los diseñadores que realizarán el arte)
15. Operador(es) (se ingresará el o los operadores que realizarán el arte)
16. Artesano(s) (se ingresará el o los artesanos que realizarán el arte)
17. Autorizó (se mostrará opciones a escoger)
- Ing. Enrique Castillo
- Ing. Diana Abad
- Sr. Luis Carcelén
18. Recorrido (se mostrará opciones a escoger)
- Recepción
- Coordinación general
- Jefatura
- Diseño
- Máquinas
- Manufactura
- En Percha
- Cliente

GRÁFICO Nº 20 Interfaz de ingreso de nueva orden de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

58
b. Desarrollo de Página: Clientes

Ingreso de nuevo cliente

 Nombre (se ingresará el nombre del cliente)


 Dirección (se ingresará la dirección o ubicación del cliente)
 Documento (se escogerá opciones a escoger)
- DNI
- RUC
- PAS
 Número de documento (se ingresará número de documento)
 Teléfono (se ingresará número telefónico)
 Email (se ingresará email institucional)

GRÁFICO Nº 21 Interfaz ingreso de nuevo cliente


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

3.4.4. Sprint No. 3

Se desarrolla la interfaz de ingreso de materiales y categorías, como se puede


observar en las imágenes No. 5 y 6 con las siguientes opciones y características:

a. Desarrollo de página: Materiales

Ingreso de nuevo material

 Nombre (se ingresará el nombre del material).

59
 Categoría (se escogerá la categoría previamente guardada).

 Código de identificación (se ingresara el código que identificará al producto


sea este código de barras u otro).

 Stock Inicial (se ingresara el stock inicial del material).

 Descripción (se ingresara una breve descripción del material).

 Imagen (permitirá cargar una imagen para identificar el material).

GRÁFICO Nº 22 Interfaz ingreso de nuevos materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

b. Desarrollo de página: Categorías

Ingreso de nueva categoría

 Nombre (se ingresará el nombre de categoría)

 Descripción (se ingresará una breve descripción de la categoría)

60
GRÁFICO Nº 23 Interfaz ingreso de nueva categoría
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

3.4.5. Sprint No. 4

Se desarrolla la interfaz de abastecimiento y proveedores, como se puede


observar en las imágenes No. 7 y 8 con las siguientes opciones y características:

a. Desarrollo de página: Abastecimiento

Nuevo ingreso

 Proveedor (se buscará el nombre del proveedor previamente registrado)


 Tipo Comprobante (se escogerá de una lista de opciones)
- Acta de entrega recepción
- Factura
- Oficio
 Serie Comprobante (permitirá ingresar la serie)
 Número Comprobante (permitirá ingresar el número)
 Impuesto (permitirá elegir si incluye o no el impuesto el material a
abastecer)
 Material (se escogerá el material previamente registrado)
 Cantidad (se ingresará la cantidad a ingresar)
 Precio (se ingresará el precio por unidad del material)

61
GRÁFICO Nº 24 Interfaz ingreso de nueva categoría
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

b. Desarrollo de página: Proveedores


Nuevo ingreso proveedor
 Nombre
 Dirección
 Documento de identificación
 Número de documento
 Teléfono
 Email

GRÁFICO Nº 25 Interfaz ingreso de nuevo proveedor


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

62
3.4.6. Sprint No. 5

Instalación y creación de base de datos en MySql, desarrollo de la interfaz de


ingreso de nuevos usuarios con su respectivo rol, como se puede observar en las
imágenes No. 9 con las siguientes opciones y características:

a. Desarrollo de página: usuarios


Nuevo usuario

- Nombre (ingreso de nombre del usuario)


- E-mail (ingreso del correo institucional)
- Password (ingreso de la contraseña)
- Confirmar Password (ingreso de la contraseña para confirmar
igualdad)

GRÁFICO Nº 26 Interfaz ingreso de nuevo usuario


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

3.4.7. Sprint No. 6

Desarrollo de las pantallas de visualización de materiales y categorías ingresadas


y sus respectivos botones para agregar, editar, eliminar y generar reportes.

63
GRÁFICO Nº 27 Interfaz de visualización de materiales ingresados
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

GRÁFICO Nº 28 Interfaz de visualización de categorías ingresadas


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

64
GRÁFICO Nº 29 Interfaz de visualización de stock de materiales ingresados
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

GRÁFICO Nº 30 Interfaz de visualización de proveedores ingresados


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

65
GRÁFICO Nº 31 Interfaz de visualización de órdenes de trabajo ingresadas
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

GRÁFICO Nº 32 Interfaz de visualización de clientes ingresados


Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

66
GRÁFICO Nº 33 Interfaz de visualización de usuarios ingresados
Elaboración: Luis Eduardo Paz Castillo
Fuente: Framework Laravel 5

GRÁFICO Nº 34 Arquitectura del sistema


Elaboración: Luis Eduardo Paz Castillo
Fuente: Información del proyecto

67
3.5. Modelo Entidad Relación

GRÁFICO Nº 35 Diagrama relacional de Base de Datos MySql


Elaboración: Luis Eduardo Paz Castillo
Fuente: MySql

68
3.6. Entregables del proyecto
Con la programación del sistema web de órdenes de trabajo, se tendrá un medio
eficaz para el registro, control y seguimiento de las labores internas. El sistema
completo será copiado en un espacio del hosting alquilado de la Editorial, se
accederá a él desde un subdominio creado a partir de su dominio principal.

Proveedor del servicio: Ecuaweb


Dominio principal: www.eluniversitario.edu.ec
Subdominio de SWOT: www.swot.eluniversitario.edu.ec

La metodología Scrum se utilizó para el desarrollo completo de este proyecto,


brindo resultados excelentes en cada Sprint afianzando el lazo entre los usuarios
y el desarrollador. Cada Sprint presentado en las reuniones con los usuarios,
donde estos podían observar los avances respectivos del proyecto de los cuales,
no se dieron objeciones de cambios mayores en la estructura, solo modificaciones
de diseño como color y ubicación de botones, esto ocurrió gracias a que aportaban
ideas para cada sub-página que se programaría.

Se entregan:

1. Seis Sprint, que cubren las prioridades y necesidades de la Jefatura para


la gestión interna de las Órdenes de Trabajo.

2. Manual de Usuario, especifica el uso de cada una de las opciones


disponibles en Swot

3. Manual Técnico, describe el diseño del prototipo para la gestión en


ambientes web desde los diferentes dispositivos utilizados.

69
.
CAPÍTULO IV
RESULTADOS CONCLUSIONES Y RECOMENDACIONES
4. Criterios de aceptación del producto o Servicio
4.1. Matriz de aceptación
CUADRO N. 8
Requerimientos Funcionales
Código Requerimientos
RF-001 El usuario cuenta con una interfaz capaz de registrar la información de la
orden de trabajo, agregar el material que va a utilizar en la misma
disminuyéndola por medio de la aplicación de un triguer del stock
RF-002 El sistema le permite a los usuarios agregar nuevos materiales al inventario
y relacionarlo con la categoría a la que previamente se ha guardado
RF-003 Swot permite registrar nuevas categorías para clasificar los materiales
ingresados
RF-004 El sistema le facilita al usuario el registro de proveedores mismos que
pueden ser seleccionados en el abastecimiento de materiales para que se
pueda identificar el origen de cada material
RF-005 El proyecto cuenta con el registro de clientes mismo que son vinculados en
las órdenes de trabajo al ingresarlas
RF-006 Mediante la interfaz el sistema permite el registro de usuarios ingresando el
correo y contraseña para su respectivo acceso
RF-007 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 las ordenes de trabajado registradas
RF-008 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 los materiales del inventario registrados
RF-009 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 las categorías de los materiales registrados
RF-010 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 los proveedores registrados
RF-011 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 los clientes registrados
RF-012 La interfaz presenta automáticamente en orden descendente paginando de
10 en 10 los usuarios registrados
RF-013 El sistema presenta los materiales más utilizados y los valores de ingresos
y egresos de materiales del inventario por día, mes y año.
RF-014 El proyecto se programó en el Framework Laravel mismo que incorpora
MVC, arquitectura de que separa la interfaz de usuario de los datos de la
aplicación y la lógica de control en componentes distintos
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

70
CUADRO N. 9
Requerimientos no funcionales
Código Descripción de requerimientos no funcionales
RNF-001 La programación del sistema siguiendo las políticas del Centro
de Cómputo de la Universidad se debe efectuar utilizando
herramientas de software libre.
RNF-002 El sistema web debe ser desarrollado de tal manera que todos los
navegadores más utilizados como Google Chrome, Firefox Mozilla,
Edge puedan visualizarlo sin ningún inconveniente.

RNF-003 El sistema web debe crearse desde 0 siguiendo las mejores


prácticas de programación.

RNF-004 Se deberá utilizar el sistema de base de datos más utilizado en los


hosting de alquiler en la actualidad.

Elaboración: Luis Eduardo Paz Castillo


Fuente: Jefatura Editorial E Imprenta
4.2. Informe de aceptación y aprobación

Una vez culminada la programación del proyecto, los usuarios realizaron las
pruebas necesarias en cada ítem de cada una de las pantallas, obteniendo
respuestas favorables en las opciones desarrolladas:
 Registro de órdenes de  Reportes de registros de
trabajo y materiales que se proveedores
utilizarán en la misma.  Reportes de registros de
 Registro de materiales en clientes
inventario  Visualización de órdenes de
 Registro de categorías de trabajo y materiales que se
materiales utilizarán en la misma.
 Registro de proveedores  Visualización de materiales
 Registro de clientes en inventario
 Registros de usuarios  Visualización de categorías
 Reportes de registros de de materiales
órdenes de trabajo  Visualización de proveedores
 Reportes de registros de  Visualización de clientes
materiales en inventario  Visualización de usuarios
 Reportes de registros de
categorías de materiales

Las pruebas ejecutadas a las opciones mencionadas arrojaron los resultados


esperados, mismos que demuestran la funcionalidad del sistema, obteniendo de
esta forma un sistema sólido que cumple con todos los requerimientos impuestos
por la jefatura de la Editorial E Imprenta.

71
4.3. Criterios de validación de la propuesta

Con el objetivo de validar el sistema web, se realizó varios tipos de pruebas por
parte de los 26 funcionarios de la Jefatura, los resultados se pueden visualizar en
el cuadro No. 8, y la petición de estas pruebas se muestran en el anexo No. 4, se
las realizó mientras transcurría la capacitación, permitiéndoles registrarse con un
usuario y clave con rol de acceso total, de esta manera poder validar cada opción
del sistema, en medio de este estudio se levantó la información necesaria que
comprobó que cubre las necesidades de cada una de las áreas de la Editorial:
jefatura, coordinación general, diseño, manufactura y máquinas.

CUADRO N. 10
Plan de pruebas realizado
Acción Tipo de Prueba Resultado Deseado Resultado Adquirido Conclusión
Acceso al Todos los usuarios El ingreso fue Actividad
sistema por Se realizó la ejecución del pueden iniciar sesión placentero para los superada
medio del framework desde el hosting funcionarios con éxito
subdominio
Se muestran los diferentes Los usuarios pueden
Registro de campos para rellenar la Lo usuarios pueden registrar la información Actividad
categorías de información de la categoría guardar adecuadamente de la categoría de los superada
materiales del material la información materiales con éxito
Se muestran los diferentes Los usuarios pueden Los usuarios pueden Actividad
Registro de campos para rellenar la guardar adecuadamente registrar la información superada
materiales información del material la información de los materiales con éxito
Se muestran los diferentes Los usuarios pueden
Ingreso de campos para rellenar la Los usuarios pueden registrar la información Actividad
proveedores información de los guardar adecuadamente del proveedor de superada
de materiales proveedores de materiales la información materiales con éxito
Abastecer Se muestran los diferentes Los usuarios pueden Los usuarios pueden Actividad
stock de campos para agregar stock guardar adecuadamente registrar la información superada
materiales a los materiales disponibles la información de los materiales con éxito
Selección e
Ingreso de
información Se muestra al usuario todos Los usuarios pueden Los usuarios pueden Actividad
de órdenes los campos para llenar y seleccionar opciones e ingresar la información superada
de trabajo seleccionar opciones ingresar datos de las órdenes con éxito
Se muestra al usuario los Todos los usuarios
Selección de materiales que están Selección adecuada del pueden seleccionar losActividad
material en disponibles en bodega y material y cantidad que materiales necesariossuperada
las órdenes tienen stock se necesita para cada orden con éxito
Se muestran los diferentes Se guarda Los usuarios pueden Actividad
Registro de campos para rellenar la adecuadamente la registrar la información
superada
clientes información del cliente información de los clientes con éxito
Se muestran los campos Actividad
Registro de para rellenar la información Guardado adecuado del El usuario se registra superada
usuarios del usuario usuario adecuadamente con éxito
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

67
4.4. Análisis de datos de encuesta de satisfacción del proyecto

A fin de conocer el grado de aceptación de SWOT en cuanto a rendimiento,


funcionalidad e interfaz que ofrece a través de la navegación web en sus diferentes
secciones, se encuestó a todo el personal (26 funcionarios públicos) que laboran
en la Jefatura Editorial E Imprenta de la Universidad de Guayaquil.

4.4.1. Pregunta 1. ¿Cómo calificaría la funcionalidad de SWOT?


CUADRO N. 11
Funcionalidad de SWOT
Opciones Resultados % de Respuesta
Pésima 0 0%
Regular 0 0%
Buena 8 31%
Muy Buena 10 38%
Excelente 8 31%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0%

31% 31%

38%

Pésima Regular Buena Muy Buena Excelente

GRÁFICO Nº 36 Gráfico de funcionalidad de SWOT


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

68
Análisis: Con los datos que se muestran en el gráfico se evidencia la
funcionalidad brindada por el sistema, cumple el estándar de aceptación de los
usuarios que utilizarán el sistema.

4.4.2. Pregunta 2. ¿Cómo califica el nivel de satisfacción sobre el registro


online de las órdenes de trabajo?

CUADRO N. 12
Registro online de las órdenes de trabajo
Opciones Resultados % de Respuesta
Muy insatisfecho 0 0%
Insatisfecho 0 0%
Aceptable 7 27%
Satisfecho 9 35%
Muy satisfecho 10 38%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0%

27%

38%

35%

Muy insatisfecho Insatisfecho Aceptable Satisfecho Muy satisfecho

GRÁFICO Nº 37 Gráfico de registro online de las órdenes de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

69
Análisis: El gráfico demuestra el grado alto de satisfacción que perciben los
usuarios al registrar vía internet las órdenes de trabajo con la cual laboran
diariamente.

4.4.3. Pregunta 3. ¿Qué tan amigable piensa que es la interfaz de SWOT?

CUADRO N. 13
Aceptación de interfaz de SWOT.
Opciones Resultados % de Respuesta
No es amigable 0 0%
Poco amigable 1 4%
Amigable 14 54%
Muy amigable 11 42%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0%
4%

42%

54%

No es amigable Poco amigable Amigable Muy amigable

GRÁFICO Nº 38 Gráfico aceptación de interfaz de SWOT


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

70
Análisis: El gráfico demuestra que la interfaz se ve amigable ante los usuarios,
haciendo que su constante utilización no represente problemas para cumplir con
sus funciones.

4.4.4. Pregunta 4. ¿Cómo evaluaría el tiempo de respuesta de SWOT?

CUADRO N. 14
Tiempo de respuesta de SWOT
Opciones Resultados
% de Respuesta
Muy lento 0 0%
Lento 1 4%
Normal 8 31%
Rápida 8 31%
Muy rápida 9 35%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0% 4%

34%
31%

31%

Muy lento Lento Normal Rápida Muy rápida

GRÁFICO Nº 39 Gráfico de tiempo de respuesta de SWOT


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

71
Análisis: En el gráfico se evidencia que el tiempo de respuesta satisface al 34%
de los usuarios encuestados, por lo que se determina que el tiempo de respuesta
del sistema es muy rápido.

4.4.5. Pregunta 5. ¿Respecto a la forma en que el sistema le avisa del


ingreso erróneo de datos (validaciones) como lo califica?

CUADRO N. 15
Validaciones en SWOT
Opciones Resultados % de Respuesta
Muy malo 1 4%
Malo 1 4%
Bueno 10 38%
Muy bueno 14 54%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

4% 4%

54% 38%

Muy malo Malo Bueno Muy bueno

GRÁFICO Nº 40 Gráfico de validaciones en SWOT


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

72
Análisis: Un gran porcentaje de los usuarios considera que los mensajes usados
para el ingreso correcto de datos (validaciones) son tolerable, por lo que no les
representa una molestia los avisos de alertas.

4.4.6. Pregunta 6. ¿Cómo califica la seguridad que existe para el acceso al


sistema?

CUADRO N. 16
Acceso al sistema
Opciones Resultados % de Respuesta
Muy inseguro 0 0%
Nada seguro 1 4%
Seguro 13 50%
Muy seguro 12 46%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0% 4%

46%

50%

Muy inseguro Nada seguro Seguro Muy seguro

GRÁFICO Nº 41 Gráfico de acceso al sistema


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

73
Análisis: La grafica demuestra que la seguridad de acceso al sistema a vista de
los usuarios es segura con una aceptación del 50% de las personas encuestadas
y un 46% que reconocen es muy segura.

4.4.7. Pregunta 7. ¿Considera que SWOT es importante para la gestión


eficaz de las órdenes de trabajo e inventario?

CUADRO N. 17
Gestión de las órdenes de trabajo
Opciones Resultados % de Respuesta
No es importante 6 23%
Poco importante 0 0%
Es importante 12 46%
Es muy Importante 8 31%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

23%
31%

0%

46%

No es importante Poco importante Es importante Es muy Importante

GRÁFICO Nº 42 Gráfico de gestión de las órdenes de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

74
Análisis: Un gran porcentaje de los usuarios aprecia que es importante el uso del
sistema para una eficaz gestión de las órdenes de trabajo e inventario.

4.4.8. Pregunta 8. ¿Cómo califica la gestión manual de las órdenes de


trabajo que se llevaba antes de utilizar SWOT?

CUADRO N. 18
Gestión manual de las órdenes de trabajo
Opciones Resultados % de Respuesta
Muy mala 14 54%
Mala 4 15%
Regular 6 23%
Eficiente 1 4%
Muy eficiente 1 4%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

4% 4%

23%

54%

15%

Muy mala Mala Regular Eficiente Muy eficiente

GRÁFICO Nº 43 Gráfico de gestión manual de las órdenes de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

75
Análisis: Se demuestra que el mayor porcentaje de los usuarios estaba
insatisfecho, con la deficiente gestión manual que se llevaba en las órdenes de
trabajo.

4.4.9. Pregunta 9. ¿Cree que se agilizó la gestión de los trabajos y control


de inventario por utilizar SWOT?

CUADRO N. 19
Gestión de trabajos y control de inventario ágil
Opciones Resultados % de Respuesta
En desacuerdo 0 0%
Indiferente 4 15%
De acuerdo 10 38%
Muy de acuerdo 12 46%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0%
15%

46%

38%

En desacuerdo Indiferente De acuerdo Muy de acuerdo

GRÁFICO Nº 44 Gráfico de gestión de trabajos y control de inventario ágil


Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

76
Análisis: Se verifica que el mayor porcentaje de los usuarios está satisfecho, con
la eficiente gestión que se lleva en las órdenes de trabajo y control del inventario.

4.4.10. Pregunta 10. ¿Considera que la administración del inventario


llevado en un archivo de Excel se encontraba al día antes de utilizar
SWOT?

CUADRO N. 20
Administración del inventario llevado en Excel
Opciones Resultados % de Respuesta
En desacuerdo 22 85%
Indiferente 4 15%
De acuerdo 0 0%
Muy de acuerdo 0 0%
Total 100%
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

0%
15% 0%

85%

En desacuerdo Indiferente De acuerdo Muy de acuerdo

GRÁFICO Nº 45 Gráfico de la administración del inventario llevado en


Excel
Elaboración: Luis Eduardo Paz Castillo
Fuente: Jefatura Editorial E Imprenta

77
Análisis: El gráfico demuestra que los usuarios tenían problemas con la
administración del inventario, al este ser llevado en un archivo de Excel, ahora que
utilizan el sistema no tienen ese inconveniente.

4.5. Conclusiones

 Se pudo evidenciar que en la Editorial de la Universidad de Guayaquil no


existe un sistema para una gestión eficaz de las órdenes de trabajo, por lo
que la jefatura se ve limitada ante la extensa demanda de trabajos donde
se tiene que registrar, controlar y dar seguimiento a la gran cantidad de
labores internas.

 Se ejecutó una evaluación de los puntos críticos, de esta manera se buscó


la solución eficaz para gestionar las labores internas de las órdenes de
trabajo y administrar el inventario de manera correcta.

 Se desarrolló un sistema web de órdenes de trabajo al cual se le dio el


nombre de SWOT.

 SWOT trabaja con el historial de información de las órdenes que se


encuentra vinculado directamente con el inventario de materiales de
insumos y suministros, ya que al registrar una orden de trabajo se agrega
material directamente del inventario y este a su vez se resta del mismo,
brindando al usuario una interfaz amigable donde puede realizar este
proceso.

 En la programación del sistema web de órdenes de trabajo se utilizó el


Framework Laravel con PHP, el cual brinda un alto nivel de seguridad y
rendimiento.

 Para el desarrollo completo del proyecto se usó la metodología SCRUM,


con la cual se minimizó los riesgos, se trabajó de manera colaborativa y se
obtuvieron excelentes resultados.

Se demostró que el proyecto resulta de gran aporte a la Jefatura Editorial E


Imprenta, apoyando al equipo de funcionarios públicos en el desempeño de sus
labores diarias.

4.6. Recomendaciones

 Se recomienda trasladar el sistema web a los servidores de la Universidad


de Guayaquil, de esta manera evitar gastos innecesarios a terceros y que
la información se encuentre más segura.

78
 Se recomienda eliminar el acta de entrega de insumos y suministros, que
se implementó únicamente para adjuntar a la orden el material que se
utiliza para elaborar cada orden.

 Continuar utilizando para futuras actualizaciones la metodología SCRUM


ya que se demostró que arroja excelentes resultados.

 Mantener el Framework Laravel Versión 5.1 con actualizaciones al día para


mejorar la seguridad del proyecto y su rendimiento.

79
BIBLIOGRAFÍA

Álvarez, C. R.-M. (2015). Laravel. Obtenido de https://laravel.com/


ApacheFriends. (2017). Apache Friends. Obtenido de https://www.apachefriends.org
Aura. (2017). Aura For PHP. Obtenido de http://auraphp.com/about/
Cake, P. (2017). CakePHP. Obtenido de
https://book.cakephp.org/2.0/_downloads/es/CakePHPCookbook.pdf
Canepa, G. (2016). Spache HTTP Server CookBook. Exelixis Media P.C.
CodeIgniter. (2017). CodeIgniter . Obtenido de https://www.codeigniter.com/user_guide/
GAROFALO, C. P.-A. (2015). Repositorio UCSG. Obtenido de
http://repositorio.ucsg.edu.ec/bitstream/3317/3857/1/T-UCSG-PRE-ING-CIS-
96.pdf
GARRO, A. (28 de 01 de 2014). Arkaitz Garro . Obtenido de HTML5:
https://www.arkaitzgarro.com/html5/
Laravel. (2017). Laravel. Obtenido de https://laravel.com/docs/4.2/introduction
Mora, A. S. (2015). Repositorio Institucional de la Universidad de Guayaquil. Obtenido
de http://repositorio.ug.edu.ec/handle/redug/10133
MySQL. (2017). MySQL. Obtenido de https://dev.mysql.com/doc/
ORTIZ, D. (2014). http://repositorio.uta.edu.ec. Obtenido de
http://repositorio.uta.edu.ec/jspui/bitstream/123456789/20495/1/T2511i.pdf
Paez, L. (22 de 3 de 2017). Sistemas de Infromación Paez. Obtenido de
https://sistemaspaez.com/ordenes-de-trabajo/
Phalcon. (2017). Phalcon. Obtenido de https://docs.phalconphp.com/en/3.2
Symfony. (2017). Symfony . Obtenido de https://symfony.com/what-is-symfony
Systems, G. (2014). Gb Systems Soluciones Informáticas. Obtenido de
http://gestionserviciotecnico.com/
Trigas, M. (2012). Universitat Oberta de Catalunya. Obtenido de Repositorio
Institucional:
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/17885/1/mtrigasTFC0612
memoria.pdf
ZendFramework. (2017). Zend Framework. Obtenido de https://framework.zend.com/

80
81
Anexo 1
Cronograma del Proyecto alineado a la Matriz del Marco Lógico

Mayo Junio Julio Agosto Septiembre

1era Sem

1era Sem

1era Sem

1era Sem

1era Sem
2da Sem

2da Sem

2da Sem

2da Sem

2da Sem

3ra Sem
3ra Sem

3ra Sem

3ra Sem

3ra Sem
4ta Sem

4ta Sem

4ta Sem

4ta Sem

4ta Sem
Análisis

Análisis
Planteamiento
del problema
Entrevista con
los usuarios
Levantamiento
de información
Especificaciones
del sistema
Reunión y
aceptación del
proyecto
Diseño
Diseño de la
interfaz base del
sistema y menú
Diseño de base
de datos
Presentación del
prototipo
Desarrollo
Programación de
la interfaz base
Sprint 0
Sprint 1
Sprint 2
Sprint 3
Sprint 4
Sprint 5
Sprint 6 7
Implementación
Subir al Hosting
Pruebas
Capacitación al
personal
Entrega del
Proyecto

82
Anexo 2 – Encuesta:

1. ¿Cómo calificaría la funcionalidad de SWOT?


Pésima
Regular
Buena
Muy Buena
Excelente

2. ¿Cómo califica el nivel de satisfacción sobre el registro online de las


órdenes de trabajo?
Muy insatisfecho
Insatisfecho
Aceptable
Satisfecho
Muy satisfecho

3. ¿Qué tan amigable piensa que es la interfaz de SWOT?


No es amigable
Poco amigable
Amigable
Muy amigable

4. ¿Cómo evaluaría el tiempo de respuesta de SWOT?


Muy lento
Lento
Normal
Rápida
Muy rápida

5. ¿Respecto a la forma en que el sistema le avisa del ingreso erróneo de datos


(validaciones) como lo califica?
Muy malo
Malo
Bueno
Muy bueno

6. ¿Cómo califica la seguridad que existe para el acceso al sistema?


Muy inseguro
Nada seguro
Seguro
Muy seguro

83
7. ¿Considera que SWOT es importante para la gestión eficaz de las órdenes
de trabajo e inventario?
No es importante
Poco importante
Es importante
Es muy Importante

8. ¿Cómo califica la gestión manual de las órdenes de trabajo que se llevaba


antes de utilizar SWOT?
Muy mala
Mala
Regular
Eficiente
Muy eficiente

9. ¿Cree que se agilizó la gestión de los trabajos y control de inventario por


utilizar SWOT?
En desacuerdo
Indiferente
De acuerdo
Muy de acuerdo

10. ¿Considera que la administración del inventario llevado en un archivo de


Excel se encontraba al día antes de utilizar SWOT?
En desacuerdo
Indiferente
De acuerdo
Muy de acuerdo

84
Anexo 3 – Acta de aceptación

85
Anexo 4 - Actas de Reunión

86
87
88
89
90
91
.

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS


CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES

DESARROLLO DE UN SISTEMA WEB DE ÓRDENES


DE TRABAJO PARA EL REGISTRO, CONTROL Y
SEGUIMIENTO DE LAS LABORES EN LA
JEFATURA EDITORIAL E IMPRENTA
DE LA UNIVERSIDAD
DE GUAYAQUIL.

PROYECTO DE TITULACIÓN

Previa a la obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

AUTOR:
Luis Eduardo Paz Castillo

TUTOR:
Ing. Fabricio Javier Sánchez Moreno Mgs.

GUAYAQUIL – ECUADOR
2017

I
ÍNDICE GENERAL

ÍNDICE GENERAL .............................................................................................. II


ÍNDICE DE GRÁFICOS ...................................................................................... III
MANUAL DE USUARIO ...................................................................................... 1
1. INTRODUCCIÓN .......................................................................................... 1
2. REGISTRO E INGRESO AL SISTEMA .............................................................. 2
3. ESTADÍSTICAS ........................................................................................... 4
4. INVENTARIO ............................................................................................... 5
5. ABASTECIMIENTO ....................................................................................... 9
6. ÓRDENES DE TRABAJO ............................................................................. 13
7. USUARIOS ............................................................................................... 16
MANUAL TÉCNICO .......................................................................................... 18
8. INTRODUCCIÓN ........................................................................................ 18
9. OBJETIVOS .............................................................................................. 18
10. CONTENIDO ............................................................................................. 19
11. ESPECIFICACIONES TÉCNICAS .................................................................. 19
12. DICCIONARIO DE DATOS ........................................................................... 20
13. INSTALACIÓN DE APLICACIONES ................................................................ 23
14. CONFIGURACIÓN DE APLICACIONES ........................................................... 24
15. CREANDO PROYECTO EN LARAVEL ............................................................ 33
16. FUNCIONAMIENTO DE LA APLICACIÓN PARA AMBIENTES WEB ....................... 35

II
ÍNDICE DE GRÁFICOS
Pág.

GRÁFICO N. 1
Pantalla de inicio de sesión ................................................................................. 2
GRÁFICO N. 2
Pantalla de registro de nuevos usuarios .............................................................. 3
GRÁFICO N. 3
Pantalla de recuperar la contraseña .................................................................... 3
GRÁFICO N. 4
Pantalla de visualización de estadísticas del inventario ....................................... 4
GRÁFICO N. 5
Pantalla de gestión de materiales registrados ...................................................... 5
GRÁFICO N. 6
Pantalla de ingreso de nuevo material al inventario ............................................. 5
GRÁFICO N. 7
Pantalla de edición de información de materiales ................................................ 6
GRÁFICO N. 8
Pantalla para desactivar materiales de inventario ................................................ 6
GRÁFICO N. 9
Pantalla para generar reporte de materiales ........................................................ 7
GRÁFICO N. 10
Página para visualizar el listado de categoría de materiales ................................ 7
GRÁFICO N. 11
Pantalla para agregar nueva categoría ................................................................ 8
GRÁFICO N. 12
Pantalla para editar categorías ............................................................................ 8
GRÁFICO N. 13
Pantalla para eliminar categorías ......................................................................... 9
GRÁFICO N. 14
Pantalla para abastecer el stock de materiales registrados ............................... 10
GRÁFICO N. 15
Pantalla de visualización de materiales abastecidos .......................................... 10
GRÁFICO N. 16
Pantalla de visualización de detalles de abastecimientos .................................. 10
GRÁFICO N. 17
Pantalla de cancelación de abastecimiento ....................................................... 11
GRÁFICO N. 18
Pantalla de visualización de proveedores .......................................................... 11
GRÁFICO N. 19
Pantalla de agregar nuevos proveedores .......................................................... 12
GRÁFICO N. 20
Pantalla de edición de información de proveedor............................................... 12

III
GRÁFICO N. 21
Pantalla de órdenes de trabajo registradas ........................................................ 13
GRÁFICO N. 22
Pantalla de registro de órdenes de trabajo ........................................................ 13
GRÁFICO N. 23
Pantalla de visualización de detalles de materiales ........................................... 14
GRÁFICO N. 24
Mensaje de confirmación para cancelar la orden de trabajo .............................. 14
GRÁFICO N. 25
Pantalla de visualización de clientes registrados ............................................... 15
GRÁFICO N. 26
Pantalla de edición de información de clientes .................................................. 15
GRÁFICO N. 27
Pantalla de gestión de órdenes de trabajo ......................................................... 16
GRÁFICO N. 28
Pantalla de visualización de progreso de las órdenes ........................................ 16
GRÁFICO N. 29
Pantalla de visualización de usuarios registrados .............................................. 16
GRÁFICO N. 30
Pantalla de edición de información de usuarios ................................................. 17
GRÁFICO N. 31
Pantalla de confirmación de eliminación de usuarios ......................................... 17
GRÁFICO N. 32
Estructura de la tabla PERSONA ....................................................................... 20
GRÁFICO N. 33
Estructura de la tabla ARTÍCULO ...................................................................... 20
GRÁFICO N. 34
Estructura de la tabla DETALLE_ORDEN.......................................................... 20
GRÁFICO N. 35
Estructura de la tabla ordenes ........................................................................... 21
GRÁFICO N. 36
Estructura de la tabla USERS ............................................................................ 22
GRÁFICO N. 37
Estructura de la tabla INGRESO ........................................................................ 22
GRÁFICO N. 38
Estructura de la tabla CATEGORÍA ................................................................... 22
GRÁFICO N. 39
Estructura de la tabla PASSWORD_RESETS ................................................... 23
GRÁFICO N. 40
Estructura de la tabla MIGRATIONS.................................................................. 23
GRÁFICO N. 41
Comprobación de falta de instalación de servidor local ..................................... 24
GRÁFICO N. 42
Aviso de control de cuentas de usuario activo ................................................... 24

IV
GRÁFICO N. 43
Pantalla de inicio de instalación ......................................................................... 25
GRÁFICO N. 44
Pantalla de selección de opciones de xampp .................................................... 25
GRÁFICO N. 45
Pantalla de ubicación de archivos de instalación ............................................... 26
GRÁFICO N. 46
Pantalla de aceptación de leer más sobre bitnami ............................................. 27
GRÁFICO N. 47
Pantalla de aceptación de instalación de xampp ............................................... 27
GRÁFICO N. 48
Pantalla en el trascurso de la instalación ........................................................... 28
GRÁFICO N. 49
Pantalla de permiso en las redes en el firewall .................................................. 28
GRÁFICO N. 50
Pantalla de finalización de instalación de xampp ............................................... 29
GRÁFICO N. 51
Pantalla de descarga manual de Composer ...................................................... 30
GRÁFICO N. 52
Pantalla de instalación de Composer ................................................................. 30
GRÁFICO N. 53
Pantalla de instalación de menús ...................................................................... 31
GRÁFICO N. 54
Pantalla de selección del lugar de instalación. ................................................... 31
GRÁFICO N. 55
Pantalla de aceptación de instalación ................................................................ 32
GRÁFICO N. 56
Pantalla de confirmación de instalación de Composer ....................................... 32
GRÁFICO N. 57
Pantalla de descarga de Laravel ........................................................................ 33
GRÁFICO N. 58
Pantalla de descarga de librerías ....................................................................... 34
GRÁFICO N. 59
Pantalla de culminación de descarga de Laravel ............................................... 34
GRÁFICO N. 60
Pantalla de inicio de Laravel .............................................................................. 35

V
Manual de Usuario

1. Introducción

Swot es un sistema para el registro control y seguimiento de las labores internas


en la Jefatura Editorial E Imprenta de la Universidad de Guayaquil. Este sistema
funciona completamente de forma Online, se puede acceder desde cualquier
browser, Chrome, Edge, Firefox, Explorer, Tor, se recomienda el uso de Firefox y
Chrome.

Sus beneficios principales son:

- Estadísticas del flujo de inventario


- Gestión de órdenes de trabajo
- Administración del Inventario
- Reportes de todos los registros
- Registro de clientes
- Registro de proveedores
- Progreso de las órdenes de trabajo con porcentajes
- Gestión de acceso de usuarios al sistema
- Link externo a Office 365
- Link externo a Quipux
- Link externo al Siug
- Link externo al repositorio de descargas de documentos
institucionales de la Universidad de Guayaquil

1
2. Registro e ingreso al sistema

2.1. Ingreso al Sistema Web

GRÁFICO N. 1 Pantalla de inicio de sesión


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

En la página inicial debe ingresar su correo Institucional y contraseña que


previamente fue registrada por el administrador del sistema.

Al finalizar el ingreso de su información debe escoger si desea que sus datos se


queden guardados en el navegador, para esto debe darle clic en el cuadro de
recordar usuario y contraseña, caso contrario debe dejar en blanco esa opción,
para iniciar sesión debe dar clic en el botón ingresar.

Importante: Cuando selecciona recordar usuario y contraseña, debe hacerlo


únicamente en un dispositivo u ordenador que es de su propiedad o está a su
cargo y este no es compartido con otra persona.

2
2.2. Registro de usuarios en el sistema

GRÁFICO N. 2 Pantalla de registro de nuevos usuarios


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Para el registro de los usuarios externos los cuales accederán únicamente a la


página donde podrán observar el progreso de cada orden de trabajo se debe
ingresar nombres y apellidos, correo institucional y contraseña.
Al completar la información se debe seleccionar el botón Registrarse y se tendrá
acceso automáticamente.

2.3. Recuperar contraseña

Una vez que el usuario es registrado y olvida la contraseña puede recuperarla


ingresando desde la página de inicio de sesión en la opción olvidaste tu
contraseña?

GRÁFICO N. 3 Pantalla de recuperar la contraseña


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

3
El usuario deberá ingresar el correo institucional con el cual se registró y recibirá
un link en este, donde puede cambiar la contraseña para tener acceso al sistema
otra vez.

3. Estadísticas

3.1. Inventario

Los usuarios podrán acceder a las estadísticas de los movimientos del inventario,
los gráficos mostrará análisis de datos por tiempos establecidos en lo siguiente:

 Año
 Mes
 Día

La constante utilización de los materiales son presentados por colores varios,


sobresaliendo el más utilizado.

GRÁFICO N. 4 Pantalla de visualización de estadísticas del inventario


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

4
4. Inventario

4.1. Materiales

Los usuarios podrán visualizar los materiales registrados previamente.

GRÁFICO N. 5 Pantalla de gestión de materiales registrados


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

4.1.1. Agregar nuevo material a inventario

Se deberá seleccionar el botón agregar nuevo de la pantalla anterior, se debe


ingresar la información del nuevo material a registrar en el sistema, podrá buscar
y guardar una fotografía del tipo de material para poder identificarlo con mayor
claridad y una categoría, para completar el registro se debe seleccionar el botón
guardar.

GRÁFICO N. 6 Pantalla de ingreso de nuevo material al inventario


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

5
4.1.2. Editar material

Tendrán la opción de editar el material elegido por si se halló algún error en su


escritura.

GRÁFICO N. 7 Pantalla de edición de información de materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

4.1.3. Eliminar material

Si se desea eliminar algún material mal ingresado, se debe buscarlo, una vez
encontrado, seleccionar el botón eliminar, este pasará a un estado inactivo, donde
no aparecerá en el registro de órdenes de trabajo.

GRÁFICO N. 8 Pantalla para desactivar materiales de inventario


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

6
4.1.4. Reporte de materiales

Para descargar un reporte de los materiales previamente registrados


seleccionamos el boto de reporte ubicado en la parte superior de la página.

GRÁFICO N. 9 Pantalla para generar reporte de materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Descargará un archivo en formato PDF con los registros que se visualizan en la


pantalla, el cual podemos imprimir o a su vez irlos almacenando.

4.2. Categoría

Los usuarios podrán visualizar las categorías registrados previamente.

GRÁFICO N. 10 Página para visualizar el listado de categoría de materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

7
4.2.1. Agregar nueva categoría

Se deberá seleccionar el botón nuevo como se muestra en la pantalla anterior, se


debe ingresar la información de la nueva categoría a registrar en el sistema, para
completar el registro se debe seleccionar el botón guardar.

GRÁFICO N. 11 Pantalla para agregar nueva categoría


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

4.2.2. Editar categorías

Tendrán la opción de editar la categoría elegida por si existe algún error en su


registro, se corrige la información correspondiente y se procede a seleccionar el
botón guardar.

GRÁFICO N. 12 Pantalla para editar categorías


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

8
4.2.3. Eliminar

Si se desea eliminar alguna categoría, se lo debe buscar con su nombre y una vez
encontrado, se selecciona el botón eliminar.

GRÁFICO N. 13 Pantalla para eliminar categorías


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Una vez se presiona el botón de eliminar le saldrá un mensaje el cual debe aceptar
presionando el botón confirmar para poder completar la eliminación de la
categoría.

5. Abastecimiento

5.1. Nuevo Ingreso

Se deberá seleccionar el botón nuevo que se muestra en la pantalla anterior, se


debe seleccionar el proveedor, elegir el tipo de comprobante, escribir la serie de
este y su número correspondiente, si el comprobante elegido tiene incluido el IVA
se debe seleccionar el cuadro del 12%, se elige el material a abastecer, se ingresa
la cantidad y el precio que consta en el comprobante, se selecciona el botón
agregar y para terminar el registro se selecciona el botón guardar.

9
GRÁFICO N. 14 Pantalla para abastecer el stock de materiales registrados
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

5.2. Ingresos

Los usuarios podrán visualizar el listado de los materiales abastecidos.

GRÁFICO N. 15 Pantalla de visualización de materiales abastecidos


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto
5.2.1. Detalles

Se debe seleccionar el botón de la ventana anterior detalles para poder ver la


descripción del ingreso que previamente se registró.

GRÁFICO N. 16 Pantalla de visualización de detalles de abastecimientos


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

10
5.2.2. Eliminar

Si se desea quitar de inventario el registro ingresado se debe seleccionar el


botón eliminar y confirmar en la ventana de alerta, este pasará a un estado de
cancelado.

GRÁFICO N. 17 Pantalla de cancelación de abastecimiento


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

5.3. Proveedores

Los usuarios podrán visualizar el listado de los proveedores registrados.

GRÁFICO N. 18 Pantalla de visualización de proveedores


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

11
5.4. Agregar nuevo proveedor

Para agregar un proveedor se selecciona el botón nuevo que se ve en la ventana


anterior, se ingresa la información de este y se registra seleccionando el botón
guardar.

GRÁFICO N. 19 Pantalla de agregar nuevos proveedores


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

5.4.1. Editar proveedor

Se selecciona el botón editar, se corrige la información que se necesite cambiar


y se selecciona el botón guardar para registrar los cambios en el sistema.

GRÁFICO N. 20 Pantalla de edición de información de proveedor


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

12
6. Órdenes de trabajo

6.1. Listado de órdenes de trabajo registradas

Los usuarios podrán visualizar el listado de las órdenes de trabajo registradas


con sus respectivos detalles incluyendo la barra de progreso y visualizando su
costo total.

GRÁFICO N. 21 Pantalla de órdenes de trabajo registradas


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto
6.2. Nueva orden de trabajo

Se selecciona el botón nueva OT, se ingresa la información correspondiente a la


orden de trabajo a registrar y se elige el material que esta necesita para ser
desarrollada buscando el material y asignándole la cantidad correspondiente, al
terminar se selecciona el botón guardar y la orden queda registrada.

GRÁFICO N. 22 Pantalla de registro de órdenes de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

13
6.3. Detalles

Para visualizar los materiales de cada orden se selecciona el botón detalles.

GRÁFICO N. 23 Pantalla de visualización de detalles de materiales


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

6.4. Cancelar orden de trabajo

Se selecciona el botón cancelar y se confirma en la ventana de alerta, la orden se


cancelará y el material que contiene esta orden regresará de nuevo a inventario.

GRÁFICO N. 24 Mensaje de confirmación para cancelar la orden de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

14
6.5. Clientes

Se pueden visualizar los clientes previamente registrados.

GRÁFICO N. 25 Pantalla de visualización de clientes registrados


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

6.6. Editar

Se selecciona el botón editar que se ve en la ventana anterior, se corrige la


información que se necesite y se procede a presionar el botón guardar para
registrar los cambios.

GRÁFICO N. 26 Pantalla de edición de información de clientes


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

15
6.7. Gestión

Se pude visualizar las órdenes de trabajo registradas previamente, se selecciona


el botón editar y se procede a cambiar la información correspondiente según la
orden valla avanzando por las diferentes áreas, una vez terminado se procede a
guardar los cambios.

GRÁFICO N. 27 Pantalla de gestión de órdenes de trabajo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto
6.8. Progreso

Esta página visualizarán los usuarios con el rol “invitado”, donde podrán
constatar el avance de su orden ingresada mediante una barra con porcentajes.

GRÁFICO N. 28 Pantalla de visualización de progreso de las órdenes


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto
7. Usuarios
Se visualizará los funcionarios registrados.

GRÁFICO N. 29 Pantalla de visualización de usuarios registrados


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

16
7.1. Editar

Se selecciona el botón editar de la ventana anterior y se procede a modificar la


información del usuario, una vez realizado los cambios se procede a seleccionar
el botón guardar para registrar los cambios efectuados.

GRÁFICO N. 30 Pantalla de edición de información de usuarios


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto
7.2. Eliminar

Se selecciona el botón eliminar y se procede a confirmar en la ventana de alerta


para culminar con la eliminación del usuario.

GRÁFICO N. 31 Pantalla de confirmación de eliminación de usuarios


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

17
Manual Técnico

8. Introducción

El presente manual técnico tiene como finalidad describir el diseño del prototipo
para la gestión de las órdenes de trabajo en la Jefatura Editorial E Imprenta de la
Universidad de Guayaquil.

La implementación de la aplicación web cuenta con la utilización del Framework


Laravel v5.1 y ejecución en PHP v7 adicionalmente a la protección de la
información que le presta el hosting, así como también se toma en cuenta los
posibles ataques que pueden surgir en este nuevo medio, y la utilización de la
misma es responsabilidad de cada usuario.

La distribución de la información en el sistema a todos los usuarios, se centra en


la gestión de los contenidos registrados por los usuarios registrados con los
diferentes roles.

Con los roles se tendrá un control exhaustivo de la información que maneja


internamente la base de datos y se pueden generar estadísticas respecto a las
mismas.

9. Objetivos

Objetivo General

Mostrar el desarrollo funcional del módulo y las opciones con las que cuenta el
usuario.

Objetivos Específicos

 Desarrollar el frondend del módulo de Syllabus bajo los lineamientos


establecidos por el centro de cómputo.
 Digitalizar el formato de Syllabus para ingreso del mismo por parte de los
docentes.
 Elaborar la opción para imprimir el Syllabus una vez culminado el ingreso.

18
10. Contenido
10.1. Herramientas tecnológicas

Los ambientes web abarcan un amplio mercado para los potenciales usuarios que
se internan a las nuevas tecnologías específicamente hablando, las comunidades
virtuales. Estos, con el paso del tiempo desarrollaron un particular interés por los
antes mencionados conforme pasan los años. Estas nuevas tecnologías
involucran nuevos paradigmas de programación, modelado de contenidos,
herramientas multimedia, herramientas de conectividad a bases de datos,
herramientas de seguridad y hardware.

La aplicación web se puede utilizar en ordenadores como en dispositivos móviles


que soporte las nuevas tecnologías de programación web en este caso html5,
css3 y el Framework Laravel v5.1. En estos tiempos en que la tecnología ha
avanzado la mayoría de los ordenadores y dispositivos móviles soportan este tipo
de tecnologías. Es por ello que este sistema web va orientado a ellos. Una de las
ventajas que se presentan en este tipo de tecnología es que tiene mayor
portabilidad y por eso muchos usuarios la utilizan.

En su totalidad el sistema web puede operar en ordenadores, tablets y teléfonos


con sistemas operativos desde el 2015 con su respectiva versión ejecutable de
sistema operativo.

11. Especificaciones Técnicas


Hosting

 Almacenamiento HD de espacio 1Gb mínimo para el sistema


 Servicios Memoria: Memoria Ram 4GB
 Sistema Operativo Centos

Otras Características

 Uso del FTP


 Base de Datos MySQL
 Selector de Versiones PHP: 5.3, 5.4, 5.5, 5.6 , 5.7 , 6.0, 7.0
 Versión del servidor: 10.0.21 – MariaDB

Características Avanzadas

 Servidor Apache

19
12. Diccionario de Datos

Los datos a utilizar se manejaran en las tablas ya existentes de la base de datos


de SWOT cuales son:

GRÁFICO N. 32 Estructura de la tabla PERSONA


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 33 Estructura de la tabla ARTÍCULO


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 34 Estructura de la tabla DETALLE_ORDEN


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

20
GRÁFICO N. 35 Estructura de la tabla ordenes
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 1 Estructura de la tabla DETALLE_INGRESO


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

21
GRÁFICO N. 36 Estructura de la tabla USERS
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 37 Estructura de la tabla INGRESO


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 38 Estructura de la tabla CATEGORÍA


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

22
GRÁFICO N. 39 Estructura de la tabla PASSWORD_RESETS
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

GRÁFICO N. 40 Estructura de la tabla MIGRATIONS


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

13. Instalación de aplicaciones


Para ejecutar de manera correcta SWOT en un servidor local se deben primero
instalar una serie de programas, los cuales no necesitan de una conexión a
internet de forma obligatoria.

La manera típica de instalar programas en el sistema operativo Windows es


mediante la descarga e instalación paso a paso, algunos programas no
requieren una instalación previa puesto que vienen preparados para funcionar
tan pronto su descarga termina como es el caso de Laravel.

Los programas son los siguientes:

1. Xampp (apache, MySql y Filezilla)


2. Laravel
3. Composer

Todas estas aplicaciones se las pueden encontrar directamente en sus páginas


oficiales.

23
14. Configuración de aplicaciones

14.1. Instalación de Xampp

Antes de instalar un servidor de páginas web es conveniente comprobar si no


hay ya uno instalado, o al menos si no está en funcionamiento. Para ello, es
suficiente con abrir el navegador y escribir la dirección http://localhost. Si se
obtiene un mensaje de error es que no hay ningún servidor de páginas web en
funcionamiento (podría haber algún servidor instalado, pero no estar en
funcionamiento).

GRÁFICO N. 41 Comprobación de falta de instalación de servidor local


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Una vez obtenido el archivo de instalación de XAMPP, hay que hacer doble clic
sobre él para ponerlo en marcha. Al poner en marcha el instalador XAMPP nos
muestra un aviso que aparece si está activado el Control de Cuentas de Usuario
y recuerda que algunos directorios tienen permisos restringidos:

GRÁFICO N. 42 Aviso de control de cuentas de usuario activo


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

A continuación se inicia el asistente de instalación. Para continuar, haga clic en


el botón "Next".

24
GRÁFICO N. 43 Pantalla de inicio de instalación
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Los componentes mínimos que instala XAMPP son el servidor Apache y el


lenguaje PHP, pero XAMPP también instala otros elementos. En la pantalla de
selección de componentes puede elegir la instalación o no de estos componentes.
Para seguir estos apuntes se necesita al menos instalar MySQL y phpMyAdmin.

GRÁFICO N. 44 Pantalla de selección de opciones de Xampp


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

25
En la siguiente pantalla puede elegir la carpeta de instalación de XAMPP. La
carpeta de instalación predeterminada que trae por defecto es C:\xampp. Si se
desea cambiarla, haga clic en el icono de carpeta y busque y selecciones la
carpeta donde se desea instalar XAMPP.

Es recomendable instalar la aplicación en la raíz del disco “C” para poder


encontrarla de una manera rápida.

Para continuar la configuración de la instalación, haga clic en el botón "Next".

GRÁFICO N. 45 Pantalla de ubicación de archivos de instalación


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

La siguiente pantalla ofrece información sobre los manejadores de contenidos


como Joomla, Wordpress instaladores de aplicaciones para XAMPP creados por
Bitnami. Haga clic en el botón "Next" para continuar. Si deja marcada la casilla, se
abrirá una página web de Bitnami en el navegador.

26
GRÁFICO N. 46 Pantalla de aceptación de leer más sobre Bitnami
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Una vez elegidas las opciones de instalación en las pantallas anteriores, esta
pantalla es la pantalla de confirmación de la instalación. Haga clic en el botón
"Next" para comenzar la instalación en el disco duro.

GRÁFICO N. 47 Pantalla de aceptación de instalación de Xampp


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

El proceso de copia de archivos puede durar unos minutos.

27
GRÁFICO N. 48 Pantalla en el trascurso de la instalación
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Durante la instalación, si en el ordenador no se había instalado Apache


anteriormente, en algún momento se mostrará un aviso del cortafuego de
Windows para autorizar a Apache a comunicarse en las redes privadas o públicas.
Una vez elegidas las opciones deseadas (en estos apuntes se recomienda permitir
las redes privadas y denegar las redes públicas), haga clic en el botón "Permitir
acceso".

GRÁFICO N. 49 Pantalla de permiso en las redes en el firewall


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

28
Una vez terminada la copia de archivos, la pantalla final confirma que XAMPP ha
sido instalado. Si se deja marcada la casilla, se abrirá el panel de control de
XAMPP. Para cerrar el programa de instalación, haga clic en el botón "Finish".

GRÁFICO N. 50 Pantalla de finalización de instalación de Xampp


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

14.2. Instalación de Laravel y Composer

14.2.1. Instalar Composer

Composer es una herramienta para gestionar las dependencias en PHP. Te


permite declarar las librerías de las cuales tu proyecto depende o necesita y las
instala en el proyecto por ti, si deseas saber más acerca de Composer lee el
siguiente post.

Para instalar Composer en Windows debemos descargarlo de su página oficial y


en la sección Windows Installer, haz click en Composer-Setup.exe.

29
GRÁFICO N. 51 Pantalla de descarga manual de Composer
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Una vez que la descarga finalice, ejecuta el instalador y haz click en Next.

GRÁFICO N. 52 Pantalla de instalación de Composer


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Si quieres administrar tus proyectos mediante el Explorador de Windows puedes


seleccionar la opción “Install Shell Menus” aunque lo recomendable es la usar la
línea de comandos.

30
GRÁFICO N. 53 Pantalla de instalación de menús
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

A continuación nos pide que indiquemos la ruta del ejecutable de PHP, en mi caso
como estoy trabajando con XAMPP el ejecutable de PHP se encuentra en la ruta
C:\xampp\php\ (si usas WAMPP la ruta es C:\wamp\bin\php\php5.5.12) y
seleccionas php.exe, luego click en Next.

GRÁFICO N. 54 Pantalla de selección del lugar de instalación.


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

31
En este punto el instalador de Composer nos muestra la configuración de la
instalación, simplemente le damos click a Install.

GRÁFICO N. 55 Pantalla de aceptación de instalación


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Una vez esté todo instalado, aparecerán otras donde simplemente debes hacer
click en Next, y posteriormente en Finalizar; después de tantos Next, Next típicos
de Windows el instalador de Composer habrá puesto en nuestro PATH global la
ruta de la carpeta PHP y su propia carpeta Composer. Esto nos permite trabajar
desde consola escribiendo sólo PHP o Composer sin necesidad de indicar la ruta
del ejecutable. Para ver que todo está en orden vamos a realizar dos pequeñas
pruebas, así que es momento de abrir la consola, y teclear:

Esto debería devolver la versión de cada uno, como se ve en la siguiente imagen:

GRÁFICO N. 56 Pantalla de confirmación de instalación de Composer


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

32
Con esto ya tenemos Composer instalado y funcionando en Windows, ahora solo
nos queda instalar Laravel, veamos cómo hacer esto posible.

15. Creando proyecto en Laravel

Existen dos formas de crear un proyecto con Laravel, la primera es descargando


el archivo master desde su repositorio oficial de GitHub y la otra es usando
Composer desde la consola que es precisamente lo que haremos en esta ocasión.

Desde la consola, dirígete al directorio donde guardas tus proyectos web (si usas
XAMPP la ruta es C:\xampp\htdocs para WAMPP es C:\wamp\www), y teclea lo
siguiente:

1 cd C:\xampp\htdocs
Ahora crearemos el proyecto laravel escribiendo las siguientes palabras
mágicas:
composer create-project laravel/laravel nombre_del_proyecto --prefer-
1
dist

En mi caso en un arranque de creatividad llamaré a mi proyecto “prueba”

GRÁFICO N. 57 Pantalla de descarga de Laravel


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Composer empezará a descargar las librerías necesarias para nuestro proyecto,


esto requiere un poco de tiempo.

33
GRÁFICO N. 58 Pantalla de descarga de librerías
Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

Si no ocurrió algún problema de conexión a Internet veremos que nuestro proyecto


“prueba” se creó correctamente.

GRÁFICO N. 59 Pantalla de culminación de descarga de Laravel


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

34
Finalmente para verificar que la creación de nuestro proyecto “pruebita” se realizó
de manera correcta, accede a http://localhost/nombre_del_proyecto/public en el
navegador de tu preferencia, donde debes ver lo siguiente:

GRÁFICO N. 60 Pantalla de inicio de Laravel


Elaboración: Luis Eduardo Paz Castillo
Fuente: Datos del proyecto

16. Funcionamiento de la aplicación para ambientes web

16.1. Login

En el sistema web el Login del usuario envía sus datos y se obtienen mediante
una consulta a la base que verifica si existe o no el usuario que inicia sesión, si
existe permite el acceso al perfil.

class Login
{
use SerializesModels;
/**
* The authenticated user.
*
* @var \Illuminate\Contracts\Auth\Authenticatable
*/
public $user;
/**
* Indicates if the user should be "remembered".
*

35
* @var bool
*/
public $remember;
/**
* Create a new event instance.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param bool $remember
* @return void
*/
public function __construct($user, $remember)
{
$this->user = $user;
$this->remember = $remember;
}
}

16.2. Login Blade

class Login
{
use SerializesModels;
/**
* The authenticated user.
*
* @var \Illuminate\Contracts\Auth\Authenticatable
*/
public $user;
/**
* Indicates if the user should be "remembered".
*
* @var bool
*/
public $remember;
/**
* Create a new event instance.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param bool $remember
* @return void
*/
public function __construct($user, $remember)
{ $this->user = $user;
$this->remember = $remember; }}

36
16.3. Registro de nuevos usuarios

En el sistema de registro el usuario tendrá que enviar sus datos mediante un


formulario html, estos datos se envían por medio del método POST y se verifica si
los datos coinciden con información de otro usuario luego procede a registrar el
usuario sino hay inconvenientes.

<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading"><h4>Registro de invitados</h4></div>
<div class="panel-body">
<form class="form-horizontal" role="form" method="POST"
action="{{ url('/register') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label for="name" class="col-md-4 control-label">Nombres y
apellidos:</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control"
name="name" value="{{ old('name') }}">
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">Correo
institucional:</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control"
name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' :
'' }}">

37
<label for="password" class="col-md-4 control-
label">Contraseña:</label>

<div class="col-md-6">
<input id="password" type="password" class="form-control"
name="password">
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password_confirmation') ? '
has-error' : '' }}">
<label for="password-confirm" class="col-md-4 control-
label">Repita la contraseña:</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-
control" name="password_confirmation">
@if ($errors->has('password_confirmation'))
<span class="help-block">
<strong>{{ $errors->first('password_confirmation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-user"></i> Registrarse
</button>
</div>
</div>
<div class="col-md-6">
<input id="rol" type="rol" class="form-control" name="rol"
value="0" style="visibility:hidden" readonly>
@if ($errors->has('rol'))
<span class="help-block">
<strong>{{ $errors->first('rol') }}</strong>
</span>
@endif </div></div></form>
</div></div>
</div></div></div>

38
16.4. Request

Nos facilita todos los datos de la solicitud actual a través HTTP Request, un objeto
sobre el que podremos consultar información sobre el cliente que realiza la
solicitud y datos que pueda estar enviando.

16.4.1. ArticuloFormRequest

<?php

namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class ArticuloFormRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'idcategoria'=>'required',
'codigo'=>'required|max:50',
'nombre'=>'required|max:100',
'stock'=>'required|numeric',
'descripcion'=>'max:512',
'imagen'=>'mimes:jpeg,bmp,png'
];
}
}

16.4.2. AvanceFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class AvanceFormRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{

39
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'tipo_comprobante'=>'max:24',
'serie_comprobante'=>'max:15',
'num_comprobante'=>'max:15',
'disenador'=>'max:200',
'operador'=>'max:200',
'artesano'=>'max:200',
'area'=>'max:20',
'aprobado'=>'max:2',
'aprobador'=>'max:255',
'tipo_plancha'=>'max:20',
'cantidad_plancha'=>'max:5',
'cantidad_tiro'=>'max:5',
'cantidad_retiro'=>'max:5',
];
}
}

16.4.3. CategoriaFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class CategoriaFormRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

40
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'nombre'=>'required|max:50',
'descripcion'=>'max:200',
];
}
}

16.4.4. IngresoFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class IngresoFormRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'idproveedor'=>'required',
'tipo_comprobante'=>'required|max:20',
'serie_comprobante'=>'max:7',
'num_comprobante'=>'required|max:10',
'idarticulo'=>'required',
'cantidad'=>'required',
'precio_compra'=>'required',
];
}
}

16.4.5. PersonaFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;

41
class PersonaFormRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'nombre'=>'required|max:100',
'tipo_documento'=>'required|max:20',
'num_documento'=>'required|max:15',
'direccion'=>'max:70',
'telefono'=>'max:15',
'email'=>'max:50'
];
}
}

16.4.6. UsuarioFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class UsuarioFormRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:255',

42
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'rol' => 'required|max:2',
];
}
}

16.4.7. OrdenesFormRequest

<?php
namespace Swot\Http\Requests;
use Swot\Http\Requests\Request;
class OrdenFormRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'idcliente'=>'required',
'tipo_comprobante'=>'required|max:24',
'serie_comprobante'=>'required|max:15',
'num_comprobante'=>'required|max:15',
'idarticulo'=>'required',
'cantidad'=>'required',
'total_orden'=>'required',
'autoridad_responsable'=>'required|max:200',
'solicitante'=>'required|max:255',
'referencia_oficio'=>'max:50',
'detalle_oficio'=>'max:255',
'nombre_archivo'=>'max:150',
'medio_entrega'=>'max:20',

43
'formato_archivo'=>'max:10',
'muestra_impresa'=>'max:2',
'acabado'=>'max:10',
'disenador'=>'max:200',
'operador'=>'max:200',
'artesano'=>'max:200',
'recepcion'=>'required|max:100',
'area'=>'max:20',
'autorizado'=>'required|max:100',
'estado'=>'max:20',
'name'=>'max:255',
];
}
}

16.4.8. Artículo

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Articulo extends Model
{
protected $table='articulo';
protected $primaryKey='idarticulo';
public $timestamps=false;
protected $fillable =[
'idcategoria',
'codigo',
'nombre',
'stock',
'descripcion',
'imagen',
'estado'
];
protected $guarded =[
];
}
16.4.9. Barra de progreso

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Barra extends Model
{

44
protected $table='orden';
protected $primaryKey='idorden';
public $timestamps=false;
protected $fillable =[
'idcliente',
'tipo_comprobante',
'serie_comprobante',
'num_comprobante',
'estado',
'solicitante',
'area',
];
protected $guarded =[
];
}
16.4.10. Categoría

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Categoria extends Model
{
protected $table='categoria';
protected $primaryKey='idcategoria';
public $timestamps=false;
protected $fillable =[
'nombre',
'descripcion',
'condicion'
];
protected $guarded =[
];
}

16.4.11. Detalle de Ingreso

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class DetalleIngreso extends Model
{
protected $table='detalle_ingreso';
protected $primaryKey='iddetalle_ingreso';
public $timestamps=false;

45
protected $fillable =[
'idingreso',
'idarticulo',
'cantidad',
'precio_compra',
'precio_orden'
];
protected $guarded =[
];
}
16.4.12. Detalle de orden

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class DetalleOrden extends Model
{
protected $table='detalle_orden';
protected $primaryKey='iddetalle_orden';
public $timestamps=false;
protected $fillable =[
'idorden',
'idarticulo',
'cantidad',
'precio_orden'
];
protected $guarded =[
];
}

16.4.13. Ingreso

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Ingreso extends Model
{
protected $table='ingreso';
protected $primaryKey='idingreso';
public $timestamps=false;
protected $fillable =[
'idproveedor',
'tipo_comprobante',

46
'serie_comprobante',
'num_comprobante',
'fecha_hora',
'impuesto',
'estado'
];
protected $guarded =[
];
}
16.4.14. Persona

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Persona extends Model
{
protected $table='persona';
protected $primaryKey='idpersona';
public $timestamps=false;
protected $fillable =[
'tipo_persona',
'nombre',
'tipo_documento',
'num_documento',
'direccion',
'telefono',
'email'
];
protected $guarded =[
];
}
16.4.15. Users

<?php
namespace Swot;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $table='users';
protected $primaryKey='id';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [

47
'password', 'remember_token',
];
}
16.4.16. Órdenes

<?php
namespace Swot;
use Illuminate\Database\Eloquent\Model;
class Orden extends Model
{
protected $table='orden';
protected $primaryKey='idorden';
public $timestamps=false;
protected $fillable =[
'idcliente',
'tipo_comprobante',
'serie_comprobante',
'num_comprobante',
'fecha_hora',
'total_orden',
'estado',
'autoridad_responsable',
'solicitante',
'referencia_oficio',
'detalle_oficio',
'nombre_archivo',
'medio_entrega',
'formato_archivo',
'muestra_impresa',
'acabado',
'disenador',
'operador',
'artesano',
'autorizado',
'area',
];
protected $guarded =[
];
}
16.5. Middleware

Un middleware es un mecanismo que se utiliza para filtrar las peticiones HTTP en


una aplicación. Están disponibles desde la versión 5 de Laravel y te permiten
agregar capas adicionales a la lógica de tu aplicación.

48
16.5.1. Authenticate

<?php
namespace Swot\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
}
16.5.2. EncryptCookies

<?php
namespace Swot\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;
class EncryptCookies extends BaseEncrypter
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];}

49
16.5.3. RedirectIfAuthenticated

<?php
namespace Swot\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/');
}
return $next($request);
}
}

16.5.4. VerifyCsrfToken

<?php
namespace Swot\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}

50
16.6. Rutas

Las rutas de nuestra aplicación se tienen que definir en el fichero routes/web.php.


Este es el punto centralizado para la definición de rutas y cualquier ruta no definida
en este fichero no será válida, generado una excepción (lo que devolverá un error
404).

16.6.1. Routes

<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get('/', function () {
return view('auth/login');
});
Route::get('/acerca', function () {
return view('acerca');
});
Route::resource('almacen/categoria','CategoriaController');
Route::resource('almacen/articulo','ArticuloController');
Route::resource('ordens/cliente','ClienteController');
Route::resource('compras/proveedor','ProveedorController');
Route::resource('compras/ingreso','IngresoController');
Route::resource('ordens/orden','OrdenController');
Route::resource('seguridad/usuario','UsuarioController');
Route::resource('barras/barra','BarraController');
Route::resource('barras/progreso','AvanceController');
Route::auth();
Route::get('/home', 'HomeController@index');
//Reportes
Route::get('reportecategorias', 'CategoriaController@reporte');
Route::get('reportearticulos', 'ArticuloController@reporte');
Route::get('reporteclientes', 'ClienteController@reporte');
Route::get('reporteproveedores', 'ProveedorController@reporte');
Route::get('reporteordens', 'OrdenController@reporte');
Route::get('reporteorden/{id}', 'OrdenController@reportec');

51
Route::get('reporteingresos', 'IngresoController@reporte');
Route::get('reporteingreso/{id}', 'IngresoController@reportec');
Route::get('/{slug?}', 'HomeController@index');

16.7. Controllers

En lugar de definir en su totalidad la lógica de las peticiones en el archivo


routes.php, es posible que desee organizar este comportamiento usando clases
tipo Controller. Los Controladores pueden agrupar las peticiones HTTP
relacionada con la manipulación lógica en una clase. Los Controladores
normalmente se almacenan en el directorio de aplicación app/Http/Controllers/.

16.7.1. ArticuloController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Swot\Http\Requests\ArticuloFormRequest;
use Swot\Articulo;
use DB;
use Fpdf;
class ArticuloController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$articulos=DB::table('articulo as a')
->join('categoria as c','a.idcategoria','=','c.idcategoria')
->select('a.idarticulo','a.nombre','a.codigo','a.stock','c.nombre as
categoria','a.descripcion','a.imagen','a.estado')
->where('a.nombre','LIKE','%'.$query.'%')
->orwhere('a.codigo','LIKE','%'.$query.'%')
->orderBy('a.stock','asc')
->paginate(10);

52
return
view('almacen.articulo.index',["articulos"=>$articulos,"searchText"=>$query]);
}
}
public function create()
{
$categorias=DB::table('categoria')->where('condicion','=','1')->get();
return view("almacen.articulo.create",["categorias"=>$categorias]);
}
public function store (ArticuloFormRequest $request)
{
$articulo=new Articulo;
$articulo->idcategoria=$request->get('idcategoria');
$articulo->codigo=$request->get('codigo');
$articulo->nombre=$request->get('nombre');
$articulo->stock=$request->get('stock');
$articulo->descripcion=$request->get('descripcion');
$articulo->estado='Activo';

if (Input::hasFile('imagen')){
$file=Input::file('imagen');

$file->move(public_path().'/imagenes/articulos/',$file->getClientOriginalNa
me());
$articulo->imagen=$file->getClientOriginalName();
}
$articulo->save();
return Redirect::to('almacen/articulo');
}
public function show($id)
{
return view("almacen.articulo.show",["articulo"=>Articulo::findOrFail($id)]);
}
public function edit($id)
{
$articulo=Articulo::findOrFail($id);
$categorias=DB::table('categoria')->where('condicion','=','1')->get();
return
view("almacen.articulo.edit",["articulo"=>$articulo,"categorias"=>$categorias]);
}
public function update(ArticuloFormRequest $request,$id)
{
$articulo=Articulo::findOrFail($id);

53
$articulo->idcategoria=$request->get('idcategoria');
$articulo->codigo=$request->get('codigo');
$articulo->nombre=$request->get('nombre');
$articulo->stock=$request->get('stock');
$articulo->descripcion=$request->get('descripcion');
$articulo->estado='Activo';
if (Input::hasFile('imagen')){
$file=Input::file('imagen');

$file->move(public_path().'/imagenes/articulos/',$file->getClientOriginalNa
me());
$articulo->imagen=$file->getClientOriginalName();
}
$articulo->update();
return Redirect::to('almacen/articulo');
}
public function destroy($id)
{
$articulo=Articulo::findOrFail($id);
$articulo->Estado='Inactivo';
$articulo->update();
return Redirect::to('almacen/articulo');
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('articulo as a')
->join('categoria as c','a.idcategoria','=','c.idcategoria')
->select('a.idarticulo','a.nombre','a.codigo','a.stock','c.nombre as
categoria','a.descripcion','a.imagen','a.estado')
->orderBy('a.nombre','asc')
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado Artículos"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(30,8,utf8_decode("Código"),1,"","L",true);
$pdf::cell(80,8,utf8_decode("Nombre"),1,"","L",true);

54
$pdf::cell(65,8,utf8_decode("Categoría"),1,"","L",true);
$pdf::cell(15,8,utf8_decode("Stock"),1,"","L",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(30,6,utf8_decode($reg->codigo),1,"","L",true);
$pdf::cell(80,6,utf8_decode($reg->nombre),1,"","L",true);
$pdf::cell(65,6,utf8_decode($reg->categoria),1,"","L",true);
$pdf::cell(15,6,utf8_decode($reg->stock),1,"","L",true);
$pdf::Ln();
}
$pdf::Output();
exit;
}
}

16.7.2. AvanceController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Swot\Http\Requests\AvanceFormRequest;
use Swot\Orden;
use DB;
use Fpdf;
use Carbon\Carbon;
use Response;
use Illuminate\Support\Collection;
class AvanceController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{

55
$query=trim($request->get('searchText'));
$ordens=DB::table('orden as v')
->join('persona as p',
'v.idcliente',
'=',
'p.idpersona')
->join('detalle_orden as dv',
'v.idorden',
'=','dv.idorden')
->select(
'v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',
'v.impuesto',
'v.autoridad_responsable',
'v.solicitante',
'v.referencia_oficio',
'v.detalle_oficio',
'v.nombre_archivo',
'v.medio_entrega',
'v.formato_archivo',
'v.muestra_impresa',
'v.acabado',
'v.disenador',
'v.operador',
'v.artesano',
'v.autorizado',
'v.area',
'v.aprobado',
'v.aprobador',
'v.estado',
'v.recepcion',
'v.total_orden')
->where('v.num_comprobante','LIKE','%'.$query.'%')
->orderBy('v.idorden','desc')
->groupBy('v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',

56
'v.impuesto',
'v.autoridad_responsable',
'v.solicitante',
'v.referencia_oficio',
'v.detalle_oficio',
'v.nombre_archivo',
'v.medio_entrega',
'v.formato_archivo',
'v.muestra_impresa',
'v.acabado',
'v.disenador',
'v.operador',
'v.artesano',
'v.autorizado',
'v.area',
'v.aprobado',
'v.aprobador',
'v.estado')
->paginate(10);
return
view('barras.progreso.index',["ordens"=>$ordens,"searchText"=>$query]);
}
}
public function show($id)
{
$orden=DB::table('orden as o')
->join('persona as p',
'v.idcliente',
'=',
'p.idpersona')
->join('detalle_orden as dv',
'v.idorden',
'=',
'dv.idorden')
->select(
'v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',
'v.impuesto',
'v.estado',
'v.aprobado',

57
'v.aprobador',
'v.tipo_plancha',
'v.cantidad_plancha',
'v.cantidad_tiro',
'v.cantidad_retiro',
'v.total_orden')
->where('v.idorden','=',$id)
->first();
$detalles=DB::table('detalle_orden as d')
->join('articulo as a','d.idarticulo','=','a.idarticulo')
->select('a.nombre as articulo','d.cantidad','d.descuento','d.precio_orden')
->where('d.idorden','=',$id)
->get();
return
view("barras.progreso.show",["orden"=>$orden,"detalles"=>$detalles]);
}
public function edit($id)
{
return view("barras.progreso.edit",["orden"=>Orden::findOrFail($id)]);
}
public function update(AvanceFormRequest $request,$id)
{
$orden=Orden::findOrFail($id);
$orden->tipo_comprobante=$request->get('tipo_comprobante');
$orden->serie_comprobante=$request->get('serie_comprobante');
$orden->num_comprobante=$request->get('num_comprobante');
$orden->disenador=$request->get('disenador');
$orden->operador=$request->get('operador');
$orden->artesano=$request->get('artesano');
$orden->area=$request->get('area');
$orden->aprobado=$request->get('aprobado');
$orden->aprobador=$request->get('aprobador');
$orden->tipo_plancha=$request->get('tipo_plancha');
$orden->cantidad_plancha=$request->get('cantidad_plancha');
$orden->cantidad_tiro=$request->get('cantidad_tiro');
$orden->cantidad_retiro=$request->get('cantidad_retiro');
$orden->update();
return Redirect::to('barras/progreso');
} public function destroy($id) {
$orden=Orden::findOrFail($id);
$orden->Estado='C';
$orden->update();
return Redirect::to('barras/progreso');
} }

58
16.7.3. BarraController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Swot\Http\Requests\OrdenFormRequest;
use Swot\Orden;
use Swot\DetalleOrden;
use DB;
use Fpdf;
use Carbon\Carbon;
use Response;
use Illuminate\Support\Collection;
class BarraController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$ordens=DB::table('orden as v')
->join('persona as p',
'v.idcliente',
'=',
'p.idpersona')
->join('detalle_orden as dv',
'v.idorden',
'=','dv.idorden')
->select(
'v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',
'v.solicitante',
'v.referencia_oficio',

59
'v.area',
'v.estado',
'v.total_orden')
->where('v.num_comprobante','LIKE','%'.$query.'%')
->orwhere('v.serie_comprobante','LIKE','%'.$query.'%')
->orwhere('v.referencia_oficio','LIKE','%'.$query.'%')
->orwhere('p.nombre','LIKE','%'.$query.'%')
->orwhere('v.solicitante','LIKE','%'.$query.'%')
->orderBy('v.idorden','desc')
->groupBy('v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',
'v.solicitante',
'v.referencia_oficio',
'v.area',
'v.estado')
->paginate(10);
return
view('barras.barra.index',["ordens"=>$ordens,"searchText"=>$query]);
}
}
}

16.7.4. CategoriaController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Swot\Categoria;
use Illuminate\Support\Facades\Redirect;
use Swot\Http\Requests\CategoriaFormRequest;
use DB;
use Fpdf;
class CategoriaController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)

60
{
if ($request)
{
$query=trim($request->get('searchText'));
$categorias=DB::table('categoria')->where('nombre','LIKE','%'.$query.'%')
->where ('condicion','=','1')
->orderBy('idcategoria','desc')
->paginate(10);
return
view('almacen.categoria.index',["categorias"=>$categorias,"searchText"=>$query
]);
}
}
public function create()
{
return view("almacen.categoria.create");
}
public function store (CategoriaFormRequest $request)
{
$categoria=new Categoria;
$categoria->nombre=$request->get('nombre');
$categoria->descripcion=$request->get('descripcion');
$categoria->condicion='1';
$categoria->save();
return Redirect::to('almacen/categoria');
}
public function show($id)
{
return
view("almacen.categoria.show",["categoria"=>Categoria::findOrFail($id)]);
}
public function edit($id)
{
return
view("almacen.categoria.edit",["categoria"=>Categoria::findOrFail($id)]);
}
public function update(CategoriaFormRequest $request,$id)
{
$categoria=Categoria::findOrFail($id);
$categoria->nombre=$request->get('nombre');
$categoria->descripcion=$request->get('descripcion');
$categoria->update();
return Redirect::to('almacen/categoria');
}

61
public function destroy($id)
{
$categoria=Categoria::findOrFail($id);
$categoria->condicion='0';
$categoria->update();
return Redirect::to('almacen/categoria');
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('categoria')
->where ('condicion','=','1')
->orderBy('nombre','asc')
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado Categorías"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(50,8,utf8_decode("Nombre"),1,"","L",true);
$pdf::cell(140,8,utf8_decode("Descripción"),1,"","L",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(50,6,utf8_decode($reg->nombre),1,"","L",true);
$pdf::cell(140,6,utf8_decode($reg->descripcion),1,"","L",true);
$pdf::Ln();
}
$pdf::Output();
exit; } }

16.7.5. ClienteController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;

62
use Swot\Http\Requests;
use Swot\Persona;
use Illuminate\Support\Facades\Redirect;
use Swot\Http\Requests\PersonaFormRequest;
use DB;
use Fpdf;
class ClienteController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$personas=DB::table('persona')
->where('nombre','LIKE','%'.$query.'%')
->where ('tipo_persona','=','Cliente')
->orwhere('num_documento','LIKE','%'.$query.'%')
->where ('tipo_persona','=','Cliente')
->orderBy('idpersona','desc')
->paginate(7);
return
view('ordens.cliente.index',["personas"=>$personas,"searchText"=>$query]);
}
}
public function create()
{
return view("ordens.cliente.create");
}
public function store (PersonaFormRequest $request)
{
$persona=new Persona;
$persona->tipo_persona='Cliente';
$persona->nombre=$request->get('nombre');
$persona->tipo_documento=$request->get('tipo_documento');
$persona->num_documento=$request->get('num_documento');
$persona->direccion=$request->get('direccion');
$persona->telefono=$request->get('telefono');
$persona->email=$request->get('email');
$persona->save();
return Redirect::to('ordens/cliente');

63
}
public function show($id)
{
return view("ordens.cliente.show",["persona"=>Persona::findOrFail($id)]);
}
public function edit($id)
{
return view("ordens.cliente.edit",["persona"=>Persona::findOrFail($id)]);
}
public function update(PersonaFormRequest $request,$id)
{
$persona=Persona::findOrFail($id);
$persona->nombre=$request->get('nombre');
$persona->tipo_documento=$request->get('tipo_documento');
$persona->num_documento=$request->get('num_documento');
$persona->direccion=$request->get('direccion');
$persona->telefono=$request->get('telefono');
$persona->email=$request->get('email');
$persona->update();
return Redirect::to('ordens/cliente');
}
public function destroy($id)
{
$persona=Persona::findOrFail($id);
$persona->tipo_persona='Inactivo';
$persona->update();
return Redirect::to('ordens/cliente');
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('persona')
->where ('tipo_persona','=','Cliente')
->orderBy('idpersona','desc')
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado Clientes"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);

64
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(80,8,utf8_decode("Nombre"),1,"","L",true);
$pdf::cell(35,8,utf8_decode("Documento"),1,"","L",true);
$pdf::cell(50,8,utf8_decode("Email"),1,"","L",true);
$pdf::cell(25,8,utf8_decode("Teléfono"),1,"","L",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(80,6,utf8_decode($reg->nombre),1,"","L",true);
$pdf::cell(35,6,utf8_decode($reg->num_documento),1,"","L",true);
$pdf::cell(50,6,utf8_decode($reg->email),1,"","L",true);
$pdf::cell(25,6,utf8_decode($reg->telefono),1,"","L",true);
$pdf::Ln();
}
$pdf::Output();
exit;
}
}

16.7.6. Controller

<?php
namespace Swot\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;
class Controller extends BaseController
{
use AuthorizesRequests, AuthorizesResources, DispatchesJobs,
ValidatesRequests;
}

16.7.7. HomeController

<?php
namespace Swot\Http\Controllers;
use Swot\Http\Requests;
use Illuminate\Http\Request;
use DB;

65
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$comprasmes=DB::select('SELECT monthname(i.fecha_hora) as mes,
sum(di.cantidad*di.precio_compra) as totalmes from ingreso i inner join
detalle_ingreso di on i.idingreso=di.idingreso where i.estado="A" group by
monthname(i.fecha_hora) order by month(i.fecha_hora) desc limit 12');
$ordensmes=DB::select('SELECT monthname(v.fecha_hora) as mes,
sum(v.total_orden) as totalmes from orden v where v.estado="A" group by
monthname(v.fecha_hora) order by month(v.fecha_hora) desc limit 12');
$ordensdia=DB::select('SELECT DATE(v.fecha_hora) as dia,
sum(v.total_orden) as totaldia from orden v where v.estado="A" group by
v.fecha_hora order by day(v.fecha_hora) desc limit 15');
$productosvendidos=DB::select('SELECT a.nombre as
articulo,sum(dv.cantidad) as cantidad from articulo a inner join detalle_orden dv
on a.idarticulo=dv.idarticulo inner join orden v on dv.idorden=v.idorden where
v.estado="A" and year(v.fecha_hora)=year(curdate()) group by a.nombre order by
sum(dv.cantidad) desc limit 10');
$totales=DB::select('SELECT (select
ifnull(sum(di.cantidad*di.precio_compra),0) from ingreso i inner join
detalle_ingreso di on i.idingreso=di.idingreso where
DATE(i.fecha_hora)=curdate() and i.estado="A") as totalingreso, (select
ifnull(sum(v.total_orden),0) from orden v where DATE(v.fecha_hora)=curdate()
and v.estado="A") as totalorden');
return
view('home',["comprasmes"=>$comprasmes,"ordensmes"=>$ordensmes,"ordens
dia"=>$ordensdia,"productosvendidos"=>$productosvendidos,"totales"=>$totales
]); } }

66
16.7.8. IngresoController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Swot\Http\Requests\IngresoFormRequest;
use Swot\Ingreso;
use Swot\DetalleIngreso;
use DB;
use Fpdf;
use Carbon\Carbon;
use Response;
use Illuminate\Support\Collection;
class IngresoController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$ingresos=DB::table('ingreso as i')
->join('persona as p','i.idproveedor','=','p.idpersona')
->join('detalle_ingreso as di','i.idingreso','=','di.idingreso')
->select('i.idingreso','i.fecha_hora','p.nombre','i.tipo_comprobante','i.serie_compro
bante','i.num_comprobante','i.impuesto','i.estado',DB::raw('sum(di.cantidad*preci
o_compra) as total'))
->where('i.num_comprobante','LIKE','%'.$query.'%')
->orderBy('i.idingreso','desc')
->groupBy('i.idingreso','i.fecha_hora','p.nombre','i.tipo_comprobante','i.serie_com
probante','i.num_comprobante','i.impuesto','i.estado')
->paginate(10);
return
view('compras.ingreso.index',["ingresos"=>$ingresos,"searchText"=>$query]);

}
}
public function create()

67
{
$personas=DB::table('persona')->where('tipo_persona','=','Proveedor')->g
et();
$articulos = DB::table('articulo as art')
->select(DB::raw('CONCAT(art.codigo, " ",art.nombre) AS
articulo'),'art.idarticulo')
->where('art.estado','=','Activo')
->get();
return
view("compras.ingreso.create",["personas"=>$personas,"articulos"=>$articulos]);
}
public function store (IngresoFormRequest $request)
{
try{
DB::beginTransaction();
$ingreso=new Ingreso;
$ingreso->idproveedor=$request->get('idproveedor');
$ingreso->tipo_comprobante=$request->get('tipo_comprobante');
$ingreso->serie_comprobante=$request->get('serie_comprobante');
$ingreso->num_comprobante=$request->get('num_comprobante');

$mytime = Carbon::now('America/Lima');
$ingreso->fecha_hora=$mytime->toDateTimeString();
if ($request->get('impuesto')=='1')
{
$ingreso->impuesto='12';
//Impuesto de Ecuador 12%
}
else
{
$ingreso->impuesto='0';
}
$ingreso->estado='A';
$ingreso->save();
$idarticulo = $request->get('idarticulo');
$cantidad = $request->get('cantidad');
$precio_compra = $request->get('precio_compra');
$precio_orden = $request->get('precio_orden');
$cont = 0;
while($cont < count($idarticulo)){
$detalle = new DetalleIngreso();
$detalle->idingreso= $ingreso->idingreso;
$detalle->idarticulo= $idarticulo[$cont];
$detalle->cantidad= $cantidad[$cont];

68
$detalle->precio_compra= $precio_compra[$cont];
$detalle->precio_orden= $precio_orden[$cont];
$detalle->save();
$cont=$cont+1;
}
//recorre y almacena cada uno de los detalles
DB::commit();
}catch(\Exception $e)
{
DB::rollback();
}
return Redirect::to('compras/ingreso');
}
public function show($id)
{
$ingreso=DB::table('ingreso as i')
->join('persona as p','i.idproveedor','=','p.idpersona')
->join('detalle_ingreso as di','i.idingreso','=','di.idingreso')

->select('i.idingreso','i.fecha_hora','p.nombre','i.tipo_comprobante','i.serie_compro
bante','i.num_comprobante','i.impuesto','i.estado',DB::raw('sum(di.cantidad*preci
o_compra) as total'))
->where('i.idingreso','=',$id)
->first();//solo obtener el primer ingreso que cumpla

$detalles=DB::table('detalle_ingreso as d')
->join('articulo as a','d.idarticulo','=','a.idarticulo')
->select('a.nombre as
articulo','d.cantidad','d.precio_compra','d.precio_orden')
->where('d.idingreso','=',$id)
->get();//obtengo todos los detalles
return
view("compras.ingreso.show",["ingreso"=>$ingreso,"detalles"=>$detalles]);
}
public function destroy($id)
{
$ingreso=Ingreso::findOrFail($id);
$ingreso->Estado='C';
$ingreso->update();
return Redirect::to('compras/ingreso');
}
public function reportec($id){
//Obtengo los datos
$ingreso=DB::table('ingreso as i')

69
->join('persona as p','i.idproveedor','=','p.idpersona')
->join('detalle_ingreso as di','i.idingreso','=','di.idingreso')
->select('i.idingreso','i.fecha_hora','p.nombre','p.direccion','p.num_documento','i.ti
po_comprobante','i.serie_comprobante','i.num_comprobante','i.impuesto','i.estad
o',DB::raw('sum(di.cantidad*precio_compra) as total'))
->where('i.idingreso','=',$id)
->first();
$detalles=DB::table('detalle_ingreso as d')
->join('articulo as a','d.idarticulo','=','a.idarticulo')
->select('a.nombre as
articulo','d.cantidad','d.precio_compra','d.precio_orden')
->where('d.idingreso','=',$id)
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetFont('Arial','B',14);
//Inicio con el reporte
$pdf::SetXY(170,20);
$pdf::Cell(0,0,utf8_decode($ingreso->tipo_comprobante));
$pdf::SetFont('Arial','B',14);
//Inicio con el reporte
$pdf::SetXY(170,40);
$pdf::Cell(0,0,utf8_decode($ingreso->serie_comprobante."-
".$ingreso->num_comprobante));
$pdf::SetFont('Arial','B',10);
$pdf::SetXY(35,60);
$pdf::Cell(0,0,utf8_decode($ingreso->nombre));
$pdf::SetXY(35,69);
$pdf::Cell(0,0,utf8_decode($ingreso->direccion));
//***Parte de la derecha
$pdf::SetXY(180,60);
$pdf::Cell(0,0,utf8_decode($ingreso->num_documento));
$pdf::SetXY(180,69);
$pdf::Cell(0,0,substr($ingreso->fecha_hora,0,10));
$total=0;
//Mostramos los detalles
$y=89;
foreach($detalles as $det){
$pdf::SetXY(20,$y);
$pdf::MultiCell(10,0,$det->cantidad);
$pdf::SetXY(32,$y);
$pdf::MultiCell(120,0,utf8_decode($det->articulo));
$pdf::SetXY(162,$y);
$pdf::MultiCell(25,0,$det->precio_compra);

70
$pdf::SetXY(187,$y);
$pdf::MultiCell(25,0,sprintf("%0.2F",($det->precio_compra*$det->cantidad)));
$total=$total+($det->precio_compra*$det->cantidad);
$y=$y+7;
}
$pdf::SetXY(187,153);
$pdf::MultiCell(20,0,"".sprintf("%0.2F", $ingreso->total-
($ingreso->total*$ingreso->impuesto/($ingreso->impuesto+100))));
$pdf::SetXY(187,160);
$pdf::MultiCell(20,0,"".sprintf("%0.2F",
($ingreso->total*$ingreso->impuesto/($ingreso->impuesto+100))));
$pdf::SetXY(187,167);
$pdf::MultiCell(20,0,"".sprintf("%0.2F", $ingreso->total));
$pdf::Output();
exit;
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('ingreso as i')
->join('persona as p','i.idproveedor','=','p.idpersona')
->join('detalle_ingreso as di','i.idingreso','=','di.idingreso')
->select('i.idingreso','i.fecha_hora','p.nombre','i.tipo_comprobante','i.serie_compro
bante','i.num_comprobante','i.impuesto','i.estado',DB::raw('sum(di.cantidad*preci
o_compra) as total'))
->orderBy('i.idingreso','desc')
->groupBy('i.idingreso','i.fecha_hora','p.nombre','i.tipo_comprobante','i.serie_com
probante','i.num_comprobante','i.impuesto','i.estado')
->get();
//Ponemos la hoja Horizontal (L)
$pdf = new Fpdf('L','mm','A4');
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado de Abastecimiento"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(35,8,utf8_decode("Fecha"),1,"","L",true);
$pdf::cell(80,8,utf8_decode("Proveedor"),1,"","L",true);
$pdf::cell(45,8,utf8_decode("Comprobante"),1,"","L",true);
$pdf::cell(10,8,utf8_decode("Imp"),1,"","C",true);

71
$pdf::cell(25,8,utf8_decode("Total"),1,"","R",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(35,8,utf8_decode($reg->fecha_hora),1,"","L",true);
$pdf::cell(80,8,utf8_decode($reg->nombre),1,"","L",true);
$pdf::cell(45,8,utf8_decode($reg->tipo_comprobante.':
'.$reg->serie_comprobante.'-'.$reg->num_comprobante),1,"","L",true);
$pdf::cell(10,8,utf8_decode($reg->impuesto),1,"","C",true);
$pdf::cell(25,8,utf8_decode($reg->total),1,"","R",true);
$pdf::Ln();
}
$pdf::Output();
exit;
}
}

16.7.9. ProveedorController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Swot\Persona;
use Illuminate\Support\Facades\Redirect;
use Swot\Http\Requests\PersonaFormRequest;
use DB;
use Fpdf;
class ProveedorController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$personas=DB::table('persona')
->where('nombre','LIKE','%'.$query.'%')

72
->where ('tipo_persona','=','Proveedor')
->orwhere('num_documento','LIKE','%'.$query.'%')
->where ('tipo_persona','=','Proveedor')
->orderBy('idpersona','desc')
->paginate(7);
return
view('compras.proveedor.index',["personas"=>$personas,"searchText"=>$query])
;
}
}
public function create()
{
return view("compras.proveedor.create");
}
public function store (PersonaFormRequest $request)
{
$persona=new Persona;
$persona->tipo_persona='Proveedor';
$persona->nombre=$request->get('nombre');
$persona->tipo_documento=$request->get('tipo_documento');
$persona->num_documento=$request->get('num_documento');
$persona->direccion=$request->get('direccion');
$persona->telefono=$request->get('telefono');
$persona->email=$request->get('email');
$persona->save();
return Redirect::to('compras/proveedor');
}
public function show($id)
{
return
view("compras.proveedor.show",["persona"=>Persona::findOrFail($id)]);
}
public function edit($id)
{
return
view("compras.proveedor.edit",["persona"=>Persona::findOrFail($id)]);
}
public function update(PersonaFormRequest $request,$id)
{
$persona=Persona::findOrFail($id);

$persona->nombre=$request->get('nombre');
$persona->tipo_documento=$request->get('tipo_documento');
$persona->num_documento=$request->get('num_documento');

73
$persona->direccion=$request->get('direccion');
$persona->telefono=$request->get('telefono');
$persona->email=$request->get('email');
$persona->update();
return Redirect::to('compras/proveedor');
}
public function destroy($id)
{
$persona=Persona::findOrFail($id);
$persona->tipo_persona='Inactivo';
$persona->update();
return Redirect::to('compras/proveedor');
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('persona')
->where ('tipo_persona','=','Proveedor')
->orderBy('idpersona','desc')
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado Proveedores"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(80,8,utf8_decode("Nombre"),1,"","L",true);
$pdf::cell(35,8,utf8_decode("Documento"),1,"","L",true);
$pdf::cell(50,8,utf8_decode("Email"),1,"","L",true);
$pdf::cell(25,8,utf8_decode("Teléfono"),1,"","L",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(80,6,utf8_decode($reg->nombre),1,"","L",true);
$pdf::cell(35,6,utf8_decode($reg->num_documento),1,"","L",true);
$pdf::cell(50,6,utf8_decode($reg->email),1,"","L",true);
$pdf::cell(25,6,utf8_decode($reg->telefono),1,"","L",true);

74
$pdf::Ln();
}
$pdf::Output();
exit;
}
}

16.7.10. UsuarioController

<?php

namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Swot\User;
use Illuminate\Support\Facades\Redirect;
use Swot\Http\Requests\UsuarioFormRequest;
use DB;
class UsuarioController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$usuarios=DB::table('users')->where('name','LIKE','%'.$query.'%')
->orderBy('id','desc')
->paginate(10);
return
view('seguridad.usuario.index',["usuarios"=>$usuarios,"searchText"=>$query]);
}
}
public function create()
{
return view("seguridad.usuario.create");
}
public function store (UsuarioFormRequest $request)
{
$usuario=new User;
$usuario->name=$request->get('name');

75
$usuario->email=$request->get('email');
$usuario->password=bcrypt($request->get('password'));
$usuario->rol=$request->get('rol');
$usuario->save();
return Redirect::to('seguridad/usuario');
}
public function edit($id)
{
return view("seguridad.usuario.edit",["usuario"=>User::findOrFail($id)]);
}
public function update(UsuarioFormRequest $request,$id)
{
$usuario=User::findOrFail($id);
$usuario->name=$request->get('name');
$usuario->email=$request->get('email');
$usuario->password=bcrypt($request->get('password'));
$usuario->rol=$request->get('rol');
$usuario->update();
return Redirect::to('seguridad/usuario');
}
public function destroy($id)
{
$usuario = DB::table('users')->where('id', '=', $id)->delete();
return Redirect::to('seguridad/usuario');
}
}

16.7.11. OrdenesController

<?php
namespace Swot\Http\Controllers;
use Illuminate\Http\Request;
use Swot\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Swot\Http\Requests\OrdenFormRequest;
use Swot\Orden;
use Swot\DetalleOrden;
use DB;
use Fpdf;
use Carbon\Carbon;
use Response;
use Illuminate\Support\Collection;
class OrdenController extends Controller

76
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$ordens=DB::table('orden as v')
->join('persona as p','v.idcliente','=','p.idpersona')
->join('detalle_orden as dv','v.idorden','=','dv.idorden')
->select('v.idorden','v.fecha_hora','p.nombre','v.tipo_comprobante','v.serie_compr
obante','v.num_comprobante','v.impuesto','v.autoridad_responsable','v.solicitante'
,'v.referencia_oficio','v.detalle_oficio','v.nombre_archivo','v.medio_entrega','v.form
ato_archivo','v.muestra_impresa','v.acabado','v.disenador','v.operador','v.artesan
o','v.autorizado','v.area','v.estado','v.recepcion','v.total_orden')
->where('v.num_comprobante','LIKE','%'.$query.'%')
->orwhere('v.serie_comprobante','LIKE','%'.$query.'%')
->orwhere('v.referencia_oficio','LIKE','%'.$query.'%')
->orwhere('p.nombre','LIKE','%'.$query.'%')
->orwhere('v.solicitante','LIKE','%'.$query.'%')
->orwhere('v.fecha_hora','LIKE','%'.$query.'%')
->orderBy('v.idorden','desc')
->groupBy('v.idorden','v.fecha_hora','p.nombre','v.tipo_comprobante','v.serie_co
mprobante','v.num_comprobante','v.impuesto','v.autoridad_responsable','v.solicit
ante','v.referencia_oficio','v.detalle_oficio','v.nombre_archivo','v.medio_entrega','v
.formato_archivo','v.muestra_impresa','v.acabado','v.disenador','v.operador','v.art
esano','v.autorizado','v.area','v.estado')
->paginate(10);
return
view('ordens.orden.index',["ordens"=>$ordens,"searchText"=>$query]);
}
}
public function create()
{
$personas=DB::table('persona')->where('tipo_persona','=','Cliente')->get();
$articulos = DB::table('articulo as art')
->join('detalle_ingreso as di','art.idarticulo','=','di.idarticulo')
->select(DB::raw('CONCAT(art.codigo, " ",art.nombre) AS articulo'),
'art.idarticulo',
'art.stock',
DB::raw('avg(di.precio_compra) as precio_promedio'))

77
->where('art.estado','=','Activo')
->where('art.stock','>','0')
->groupBy('articulo','art.idarticulo','art.stock')
->get();
return
view("ordens.orden.create",["personas"=>$personas,"articulos"=>$articulos]);
}
public function store (OrdenFormRequest $request)
{
try{
DB::beginTransaction();
$orden=new Orden;
$orden->idcliente=$request->get('idcliente');
$orden->tipo_comprobante=$request->get('tipo_comprobante');
$orden->serie_comprobante=$request->get('serie_comprobante');
$orden->num_comprobante=$request->get('num_comprobante');
$orden->autoridad_responsable=$request->get('autoridad_responsable');
$orden->solicitante=$request->get('solicitante');
$orden->referencia_oficio=$request->get('referencia_oficio');
$orden->detalle_oficio=$request->get('detalle_oficio');
$orden->nombre_archivo=$request->get('nombre_archivo');
$orden->medio_entrega=$request->get('medio_entrega');
$orden->formato_archivo=$request->get('formato_archivo');
$orden->muestra_impresa=$request->get('muestra_impresa');
$orden->acabado=$request->get('acabado');
$orden->disenador=$request->get('disenador');
$orden->operador=$request->get('operador');
$orden->artesano=$request->get('artesano');
$orden->autorizado=$request->get('autorizado');
$orden->area=$request->get('area');
$orden->recepcion=$request->get('recepcion');
$orden->total_orden=$request->get('total_orden');
$mytime = Carbon::now('America/Lima');
$orden->fecha_hora=$mytime->toDateTimeString();
if ($request->get('impuesto')=='1')
{
$orden->impuesto='12';
}
else
{
$orden->impuesto='0';
}
$orden->estado='A';
$orden->save();

78
$idarticulo = $request->get('idarticulo');
$cantidad = $request->get('cantidad');
$descuento = $request->get('descuento');
$precio_orden = $request->get('precio_orden');
$cont = 0;
while($cont < count($idarticulo)){
$detalle = new DetalleOrden();
$detalle->idorden= $orden->idorden;
$detalle->idarticulo= $idarticulo[$cont];
$detalle->cantidad= $cantidad[$cont];
$detalle->descuento= $descuento[$cont];
$detalle->precio_orden= $precio_orden[$cont];
$detalle->save();
$cont=$cont+1;
}
DB::commit();
}catch(\Exception $e)
{
DB::rollback();
}
return Redirect::to('ordens/orden');
}
public function show($id)
{
$orden=DB::table('orden as v')
->join('persona as p',
'v.idcliente',
'=',
'p.idpersona')
->join('detalle_orden as dv',
'v.idorden',
'=',
'dv.idorden')
->select(
'v.idorden',
'v.fecha_hora',
'p.nombre',
'v.tipo_comprobante',
'v.serie_comprobante',
'v.num_comprobante',
'v.impuesto',
'v.estado',
'v.disenador',
'v.artesano',

79
'v.operador',
'v.autorizado',
'v.total_orden')
->where('v.idorden','=',$id)
->first();
$detalles=DB::table('detalle_orden as d')
->join('articulo as a','d.idarticulo','=','a.idarticulo')
->select('a.nombre as articulo','d.cantidad','d.descuento','d.precio_venta')
->where('d.idventa','=',$id)
->get();
return view("ventas.venta.show",["venta"=>$venta,"detalles"=>$detalles]);
}
public function destroy($id)
{
$venta=Venta::findOrFail($id);
$orden->Estado='C';
$orden->update();
return Redirect::to('ordens/orden');
}
public function reportec($id){
//Obtengo los datos
$orden=DB::table('orden as v')
->join('persona as p','v.idcliente','=','p.idpersona')
->join('detalle_orden as dv','v.idorden','=','dv.idorden')

->select('v.idorden','v.fecha_hora','p.nombre','p.direccion','p.num_documento','v.ti
po_comprobante','v.serie_comprobante','v.num_comprobante','v.impuesto','v.est
ado','v.total_orden')
->where('v.idorden','=',$id)
->first();
$detalles=DB::table('detalle_orden as d')
->join('articulo as a','d.idarticulo','=','a.idarticulo')
->select('a.nombre as articulo','d.cantidad','d.descuento','d.precio_orden')
->where('d.idorden','=',$id)
->get();
$pdf = new Fpdf();
$pdf::AddPage();
$pdf::SetFont('Arial','B',14);
//Inicio con el reporte
$pdf::SetXY(170,20);
$pdf::Cell(0,0,utf8_decode($orden->tipo_comprobante));

$pdf::SetFont('Arial','B',14);
//Inicio con el reporte

80
$pdf::SetXY(170,40);
$pdf::Cell(0,0,utf8_decode($orden->serie_comprobante."-
".$orden->num_comprobante));
$pdf::SetFnt('Arial','B',10);
$pdf::SetXY(35,60);
$pdf::Cell(0,0,utf8_decode($orden->nombre));
$pdf::SetXY(35,69);
$pdf::Cell(0,0,utf8_decode($orden->direccion));
//***Parte de la derecha
$pdf::SetXY(180,60);
$pdf::Cell(0,0,utf8_decode($orden->num_documento));
$pdf::SetXY(180,69);
$pdf::Cell(0,0,substr($orden->fecha_hora,0,10));
$total=0;
//Mostramos los detalles
$y=89;
foreach($detalles as $det){
$pdf::SetXY(20,$y);
$pdf::MultiCell(10,0,$det->cantidad);
$pdf::SetXY(32,$y);
$pdf::MultiCell(120,0,utf8_decode($det->articulo));
$pdf::SetXY(162,$y);
$pdf::MultiCell(25,0,$det->precio_orden-$det->descuento);
$pdf::SetXY(187,$y);
$pdf::MultiCell(25,0,sprintf("%0.2F",(($det->precio_orden-
$det->descuento)*$det->cantidad)));
$total=$total+($det->precio_orden*$det->cantidad);
$y=$y+7;
}
$pdf::SetXY(187,153);
$pdf::MultiCell(20,0,"S/. ".sprintf("%0.2F", $orden->total_orden-
($orden->total_orden*$orden->impuesto/($orden->impuesto+100))));
$pdf::SetXY(187,160);
$pdf::MultiCell(20,0,"S/. ".sprintf("%0.2F",
($orden->total_orden*$orden->impuesto/($orden->impuesto+100))));
$pdf::SetXY(187,167);
$pdf::MultiCell(20,0,"S/. ".sprintf("%0.2F", $orden->total_orden));
$pdf::Output();
exit;
}
public function reporte(){
//Obtenemos los registros
$registros=DB::table('orden as v')
->join('persona as p','v.idcliente','=','p.idpersona')

81
->join('detalle_orden as dv','v.idorden','=','dv.idorden')
->select('v.idorden','v.fecha_hora','p.nombre','v.autoridad_responsable','v.tipo_co
mprobante','v.serie_comprobante','v.num_comprobante','v.impuesto','v.estado','v.
total_orden')
->orderBy('v.idorden','desc')
->groupBy('v.idorden','v.fecha_hora','p.nombre','v.autoridad_responsable','v.tipo_
comprobante','v.serie_comprobante','v.num_comprobante','v.impuesto','v.estado')
->get();
//Ponemos la hoja Horizontal (L)
$pdf = new Fpdf('L','mm','A4');
$pdf::AddPage();
$pdf::SetTextColor(35,56,113);
$pdf::SetFont('Arial','B',11);
$pdf::Cell(0,10,utf8_decode("Listado de Órdenes de Trabajo"),0,"","C");
$pdf::Ln();
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(206, 246, 245); // establece el color del fondo de la celda
$pdf::SetFont('Arial','B',10);
//El ancho de las columnas debe de sumar promedio 190
$pdf::cell(35,8,utf8_decode("Fecha"),1,"","L",true);
$pdf::cell(80,8,utf8_decode("Solicitante"),1,"","L",true);
$pdf::cell(45,8,utf8_decode("Orden de Trabajo"),1,"","L",true);
$pdf::cell(25,8,utf8_decode("Costo Total"),1,"","R",true);
$pdf::Ln();
$pdf::SetTextColor(0,0,0); // Establece el color del texto
$pdf::SetFillColor(255, 255, 255); // establece el color del fondo de la celda
$pdf::SetFont("Arial","",9);
foreach ($registros as $reg)
{
$pdf::cell(35,8,utf8_decode($reg->fecha_hora),1,"","L",true);
$pdf::cell(80,8,utf8_decode($reg->nombre.' de
'.$reg->autoridad_responsable),1,"","L",true);
$pdf::cell(45,8,utf8_decode($reg->tipo_comprobante.':
'.$reg->serie_comprobante.'-'.$reg->num_comprobante),1,"","L",true);
$pdf::cell(25,8,utf8_decode($reg->total_orden),1,"","R",true);
$pdf::Ln();
}
$pdf::Output();
exit;
}
}

82
16.8. Configuración de conexión a la base de datos MySql

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:zNv7OxwO4rehA/xUYpTjuaicJzgrtpymJHqWp8x7A60=
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=swot2
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

16.9. Redireccionamiento por medio del index hacia el sistema (en el


hosting)

<?php
/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <[email protected]>
*/
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual

83
| loading any of our classes later on. It feels nice to relax.
|
*/
require __DIR__.'/../../swot/bootstrap/autoload.php';
/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/
$app = require_once __DIR__.'/../../swot/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);

84

También podría gustarte