Sei sulla pagina 1di 64

INSTITUTO TECNOLÓGICO SUPERIOR

DE LA REGIÓN SIERRA

PROYECTO DE RESIDENCIA PROFESIONAL

PRESENTA:
YURICSA YAMILETH DE LA CRUZ MONTIEL

MATRICULA:
15E30057

ASESOR:

M.A.P.I. JESUS GUADALUPE CASTILLO XICOTÉNCATL

TEAPA, TABASCO.
1
Propuesta de Diseño de
un Control de Inventario
basado en la
metodología ABC en el
área de almacén en el
Hotel Sunset Royal
Beach Resort

2
RESUMEN

La vida empresarial, administrativa y cotidiana como la conocemos es un cambio


constante, donde tienes que adaptarte a las nuevas tendencias y exigencias de la
tecnología o quedaras en el mundo obsoleto, generando grandes pérdidas.
Actualmente con el avance tecnológico es necesario aprovechar los beneficios que
ellos conciernen.

Los ingenieros industriales tienen la filosofía de buscar reducir costos, pero estos
solo se pueden reducir si se basan en la reducción de tiempos, la mayoría de las
empresas tienen demoras y atrasos por el pésimo manejo y control de inventarios
como lo comprobamos en la empresa “Hotel Sunset Royal Beach Resort”, es por
ello que en este proyecto nos centraremos en el método de inventario ABC.

Es una técnica para segmentar las referencias de productos del almacén según su
importancia en tres categorías (A, B y C), siguiendo un criterio (por ejemplo, su valor
de inventario) y basándose en el principio de Pareto o regla 80/20, según la cual un
pequeño porcentaje de las referencias serán responsables de la mayor parte de los
objetivos globales del almacén (valor de inventario, facturación, beneficios, etc.).

3
CONTENIDO
RESUMEN ............................................................................................................................................ 3
INTRODUCCIÓN ................................................................................................................................... 7
CAPITULO 1......................................................................................................................................... 8
GENERALIDADES ................................................................................................................................ 8
1.1 DESCRIPCIÓN DE LA EMPRESA ................................................................................................ 9
1.2 PROBLEMAS A RESOLVER ...................................................................................................... 10
1.3 OBJETIVO GENERAL ............................................................................................................... 11
1.4 OBJETIVO ESPECIFICO ........................................................................................................... 11
1.5 JUSTIFICACIÓN....................................................................................................................... 12
CAPITULO 2 ...................................................................................................................................... 13
MARCO TEÓRICO ............................................................................................................................ 13
2.1 La teoría de sistemas ......................................................................................................... 14
2.2 Indicadores de Control de Inventarios .............................................................................. 15
2.3 Logística Interna ................................................................................................................ 16
2.4 Logística Externa ............................................................................................................... 16
2.5 Perspectiva Financiera ...................................................................................................... 16
2.6 Rotación de inventarios .................................................................................................... 17
2.7 Plazo promedio de inventario ........................................................................................... 17
2.8 Índice de duración de Mercancías acumuladas x 100....................................................... 17
2.9 Exactitud del Inventario .................................................................................................... 18
2.10 Perspectiva interna ........................................................................................................... 18
2.11 Costos de inventarios ........................................................................................................ 19
2.12 Costos de almacenamiento ............................................................................................... 20
2.13 Costo de Almacenamiento por Unidad ............................................................................. 21
2.14 Costos directos de almacenaje.......................................................................................... 22
2.14.1 Costos fijos .................................................................................................................... 22
2.14.2 Costos indirectos de almacenaje............................................................................... 22
CAPITULO 3 ...................................................................................................................................... 23
MARCO APLICATIVO ....................................................................................................................... 23
3.1 DESARROLLO ......................................................................................................................... 24
3.1.1 Lenguaje o herramienta de programación.................................................................... 24
3.1.2 Tipos de lenguajes ......................................................................................................... 24

4
3.1.2.1 Mysql ......................................................................................................................... 24
3.1.2.2 Bootstrap ................................................................................................................... 25
3.1.2.3 Jquery ........................................................................................................................ 26
3.1.2.4 Php............................................................................................................................. 26
3.1.2.5 Java script .................................................................................................................. 29
3.1.2.6 AJAX ........................................................................................................................... 30
3.1.2.7 Html5 ......................................................................................................................... 31
3.1.3 Herramientas a utilizar .................................................................................................. 32
3.1.3.1 sublime text 3 ............................................................................................................ 32
3.2 Código de la base de datos ............................................................................................... 35
3.3 Home Page ........................................................................................................................ 41
3.4 Login de acceso ................................................................................................................. 42
3.5 Controladores de la base de datos.................................................................................... 43
3.6 Conexión del sistema a la base de datos .......................................................................... 45
CAPITULO 4 ...................................................................................................................................... 46
RESULTADO ...................................................................................................................................... 46
4.1 Base de datos. ................................................................................................................... 47
4.2 Crud (Inicio de código). ..................................................................................................... 49
4.3 Panel de control. ............................................................................................................... 50
4.4 Usuarios............................................................................................................................. 50
4.5 Categorías.......................................................................................................................... 52
4.6 Productos. ......................................................................................................................... 52
4.7 Media. ............................................................................................................................... 53
4.8 Salidas................................................................................................................................ 54
4.9 Reportes de Salidas. .......................................................................................................... 56
4.10 Login. ................................................................................................................................. 58
4.11 Perfil de usuarios. .............................................................................................................. 59
ANÁLISIS DE RESULTADOS................................................................................................................. 59
CONCLUSIÓN ..................................................................................................................................... 61
ANEXO ............................................................................................................................................... 62
FUENTES DE INFORMACIÓN.............................................................................................................. 64
LINK DEL LA APLICACIÓN FUNCIONANDO EN UN SERVIDOR EN TIEMPO REAL ............................... 64

5
ÍNDICE DE IMÁGENES
Ilustración 1: Logo de MySql. ............................................................................................................ 25
Ilustración 2: Logo de Bootstrap ....................................................................................................... 25
Ilustración 3: Logo de JQuery ............................................................................................................ 26
Ilustración 4: Logo de PHP................................................................................................................. 29
Ilustración 5: Logo de JavaScript ....................................................................................................... 30
Ilustración 6: Logo de Ajax ................................................................................................................ 31
Ilustración 7: Logo de Sublime Text .................................................................................................. 34
Ilustración 8: Panel de Control de Xampp ......................................................................................... 48
Ilustración 9: Terminal de Xampp ..................................................................................................... 48
Ilustración 10: Home Page del sistema ............................................................................................. 49
Ilustración 11: Pantalla de Inicio del sistema .................................................................................... 50
Ilustración 12: Panel de usuarios ...................................................................................................... 51
Ilustración 13: Formulario de registro de usuarios ........................................................................... 52
Ilustración 14: Panel de categorías ................................................................................................... 52
Ilustración 15: Formulario para registros de productos ................................................................... 53
Ilustración 16: Gestor de multimedia para los productos ................................................................ 53
Ilustración 17: Sistema de selección de archivos multimedia .......................................................... 54
Ilustración 18: Registro de Salidas .................................................................................................... 55
Ilustración 19: Generador de salidas frecuentes .............................................................................. 55
Ilustración 20: Botón editar salidas ................................................................................................... 56
Ilustración 21: Generador de reportes.............................................................................................. 56
Ilustración 22: Reportes por fechas .................................................................................................. 57
Ilustración 23: Formato unico de reporte generado ......................................................................... 58
Ilustración 24: Formulario de inicio de sesión .................................................................................. 58
Ilustración 25: Perfil principal del usuario......................................................................................... 59
Ilustración 26: Almacén 1 ………………….............................................................................................. 62
Ilustración 27: Almacén 2 …………………………………………………………………………………………………………….62
Ilustración 28: Almacén 3 ………………………… ..................................................................................... 63
Ilustración 29: Almacén 4 ……………… ................................................................................................ 63

6
INTRODUCCIÓN

El incremento de la competitividad demanda satisfacción del cliente, reducción de


costos operativos y aumento de la eficiencia interna. En parte, dicho logro de
eficiencia involucra un adecuado manejo y control de inventarios en donde se
requieren sistemas de información que permitan medir las diferentes etapas del
proceso de control; al fin de cuentas: lo que no se mide, no se maneja.

La productividad y la competitividad en el manejo y control de inventarios bien puede


ser evaluada por medio de indicadores. Estos son una excelente herramienta
administrativa.

En el actual esquema de mercado libre, alta competencia, condiciones de mercado


exigente y clientes con múltiples oportunidades de escogencia, es necesario
implementar criterios de competitividad, diagnóstico rápido, ajuste inmediato
basados en un espacio de discusión objetivo. En este entorno, la Información que
permite este nivel de respuesta, es una información agregada, filtrada y oportuna.
Esta aspiración se puede materializar con un manejo adecuado de los inventarios y
se verifica el logro de dicha gestión mediante los indicadores desarrollados para tal
propósito.

La empresa “Hotel Sunset Royal Beach Resort” ha decidido implementar acciones


que le permitan mejorar el manejo de sus inventarios, con lo cual puede dar
respuesta inmediata a las exigencias de información de inventario y de información
contable relacionada con el inventario. Por esta razón se analiza en este trabajo los
criterios a evaluar para implementar acciones con el fin de obtener un manejo más
eficiente de los inventarios evitando así pérdidas de tiempo y reprocesos, entre
otros.

7
CAPITULO 1
GENERALID
ADES
8
1.1 DESCRIPCIÓN DE LA EMPRESA

Hotel Sunset Royal Beach Resort, es una empresa visionaria comprometida a


proveer experiencias de viaje inspiradoras y sostenibles, apasionado por el servicio
y siempre a la vanguardia, buscando exceder las expectativas de sus clientes.

Ubicado en Boulevard Kukulcan, Punta Cancún, Zona Hotelera, 77500 Cancún,


Quintana Roo.

Organización Instalación no
de personal adecuada

Retraso del trabajo

Incumplimiento de labor Espacio de trabajo reducido


Control
de
Inventario
Almacenamiento Estructura inadecuada
excesivo Pérdida de tiempo para el almacén

Escases de material Retraso del trabajo Sin rutas de evacuación

Mal control Organización Medidas de


del material del material seguridad
9
1.2 PROBLEMAS A RESOLVER

 Organizar de forma correcta y eficaz el almacén de los productos.


 Generar un control de productos que se solicitan para la limpieza y
mantenimiento de la empresa.
 Verificar los productos que se requieren con más frecuencias y establecerle
prioridades.
 Llevar un control de las cantidades solicitadas de forma semanal para poder
dar reportes de los productos utilizados y saber cuántos aún están en
inventario.
 Establecer un encargado del control total de esta área para evitar
controversias con el manejo del inventario.
 Hacer pedidos exactos de los productos con más prioridad, para así reducir
de forma significativa el volumen de almacenamiento.
 Reportar las entradas y salidas del almacén en tiempo y forma.
 Guardar los datos de registros para futuras aclaraciones.

10
1.3 OBJETIVO GENERAL

Mejorar el sistema de control de inventario a través de un sistema donde se


registren de forma correcta el control total del inventario, dentro del área de
suministros para limpieza y mantenimiento del Hotel Sunset Royal Beach
Resort.

1.4 OBJETIVO ESPECIFICO

 Identificar cada uno de los procesos actuales y sus deficiencias en el manejo


de inventarios mediante la revisión de procesos.

 Investigación y desarrollo de Software

 Analizar y revisar las funciones de los empleados (documentos, archivos,


procedimientos) para identificar las debilidades en el proceso de inventario.

 Desarrollar un sistema para llevar el control de los suministros y saber a


detalle lo que hay en stok y lo que no.

11
1.5 JUSTIFICACIÓN

Una síntesis de los problemas identificados en la empresa a estudiar y que justifican


la realización de la presente investigación son:

 No se elaboran documentos correspondientes a la entrada o salida de la


mercancía como remisiones o traslados; es decir se realizan los documentos
manuales, en ocasiones se omiten documentos o se reportan mucho
después de haberse recibido la mercancía o de haber hecho el documento
de salida, esto ocasiona que los inventarios permanezcan desactualizados y
la información no sea real y oportuna, lo cual genera gastos extras.

 No se almacena la mercancía ordenadamente según su referencia; ya que


en el momento de la descarga en la bodega algunas referencias se extravían
por la cual no se sabe a cuál pertenece, esto hace que los inventarios puedan
perderse y presentarse situaciones de fraude como en alguna ocasión ya
sucedió.

 La falta de unificación de referencias hace que no se pueda obtener un


consolidado de toda la empresa, pues así las referencias como producto
existan en cada uno de los almacenes el código que se asigna es diferente
en algunos casos, esto se presta para que se duplique el trabajo en la medida
que se deba llegar a una revisión para determinar que códigos de referencia
pertenecen a mercancía especifica

 No se revisa el despacho de mercancía, es decir cuando se emiten los


despachos a los almacenes de cadena no se realiza un conteo doble que
permita confirmar la cantidad de mercancía que debe salir, al igual que se
corre con el riesgo que la mercancía se extravié en la transportadora lo cual
no podemos saber en cuanto se nos está incrementando la perdida de
inventario y lleguen incompletos.

12
CAPITULO 2
MARCO
TEÓRICO
13
2.1 La teoría de sistemas

Desde hace casi medio siglo y superando a la costumbre de hablar de "organización


social", se ha comenzado a caracterizar a las sociedades humanas como “sistemas
sociales”, entendiendo con ello que existen una serie de fenómenos colectivos
interdependientes, -de alguna manera ordenados e interactuantes- que finalmente
constituyen, producen y reproducen a la sociedad humana. Se hace referencia al
sistema o sistemas sociales para indicar a la sociedad local, regional o nacional. A
esos niveles de referencia, el concepto de "sistema" resulta útil como herramienta
conceptual y de análisis, porque permite visualizar a un “todo” heterogéneo de seres
humanos, ordenado y en interacción recurrente.

Desde esta perspectiva holística, Johansen plantea que los fenómenos no sólo
deben ser estudiados a través de un enfoque reduccionista. También pueden ser
vistos en su totalidad. En otras palabras, existen fenómenos que sólo pueden ser
explicados tomando en cuenta el todo que los comprende y del que forman parte a
través de su interacción”. A su vez, la totalidad es una propiedad inherente de los
sistemas, “es decir, un sistema se comporta como un todo inseparable y coherente.
Sus diferentes partes están interrelacionadas de tal forma que un cambio en una de
ellas provoca un cambio en todas las demás y en el sistema total”.

Un “todo” puede ser, o una porción muy amplia del mundo, o un fenómeno muy
vago e impreciso (en alguna parte hay que poner los límites), de modo que aquí es
donde se prefiere al concepto de “sistema” –el cual es asumido como un conjunto
con partes reconocibles como interrelacionadas- como un concepto que permite el

14
análisis científico de cualquier “todo” que nos interese analizar o conocer en detalle
y con rigurosidad científica. […] Según Johansen, “ante la palabra sistema”, todos
los que la han definido están de acuerdo en que es un conjunto de partes
coordinadas y en interacción para alcanzar un conjunto de objetivos”.

Otras definiciones se refieren a sistema como “conjunto de objetos y sus relaciones,


y las relaciones entre los objetos y sus atributos”, y “un conjunto de partes y sus
interrelaciones”.

En cuanto a propiedades de los sistemas, éstos poseen características que lo hacen


diferente de cualquier otra entidad considerada en otras áreas del conocimiento.
Las propiedades atribuidas a los sistemas han generado el desarrollo teórico y
práctico de nuevas disciplinas, por esta razón es importante introducir en este punto
las diferentes propiedades de los sistemas.

Propiedades emergentes. si un sistema funciona como un todo, entonces tiene


propiedades distintas a las de las partes que lo componen y que “emergen” de él
cuando está en acción. Estas propiedades no se encuentran si el sistema se divide
en sus componentes y se analiza cada uno de ellos por separado.

2.2 Indicadores de Control de Inventarios

Proponer los indicadores de control de inventarios por medio de la identificación y


conceptualización de las metas deseables y de las funciones y procedimientos
idóneos para mejorar los recursos y activos asignados, así como para aumentar la
efectividad en las diferentes actividades del proceso de inventarios; basándose en
los siguientes conceptos:

15
2.3 Logística Interna

Tener en cuenta las actividades asociadas con recibo, almacenamiento y


diseminación de insumos de los productos, como manejo de materiales,
almacenamiento, control de inventarios y distribución.

2.4 Logística Externa

Tener en cuenta las actividades asociadas con la recopilación, almacenamiento y


distribución física del producto a los compradores, como almacenes de materias
terminadas, manejo de materiales, operación de vehículos de entrega,
procesamiento de pedidos y programación.

2.5 Perspectiva Financiera

Esta perspectiva financiera indica si la estrategia, puesta en práctica y ejecución,


contribuye con los objetivos (Generar Valor) La necesidad de los objetivos
financieros es indiscutible y primaria en toda actividad comercial

En general, los indicadores financieros están basados en la contabilidad de la


Compañía, y muestran el pasado de la misma. El motivo se debe a que la
contabilidad no es inmediata (Al emitir un proveedor una factura, la misma no se
contabiliza automáticamente), sino que deben efectuarse cierres que aseguren la
completitud y consistencia de la información.

Unos indicadores importantes para ser utilizados son:

16
2.6 Rotación de inventarios

Proporción entre las ventas y las existencias promedio. Indica el número de veces
que el capital invertido se recupera a través de las ventas.

El inventario de mercancías de la empresa rota X veces en el año, quiere decir, que


el inventario se convierte X veces por año en efectivo o cuentas por cobrar.

Rotación de inventarios = Acumuladas x 100

Inventario promedio

Las políticas de inventario, en general, deben mantener un elevado índice de


rotación, por eso, se requiere diseñar políticas de entregas muy frecuentes, con
tamaños muy pequeños. Para poder trabajar con este principio es fundamental
mantener una excelente comunicación entre cliente y proveedor.

2.7 Plazo promedio de inventario

Equivale a la misma relación anterior pero expresada en días.

Plazo promedio de inventario = 360 Días_______

Rotación de inventarios

2.8 Índice de duración de Mercancías acumuladas x 100

Proporción entre el inventario final y las ventas promedio del último período. Indica
cuantas veces dura el inventario que se tiene.

Índice de duración de Mercancías Ventas acumuladas x 100 =

Inventario Final x 30 días

17
Gasto Promedio

Altos niveles en ese indicador muestran demasiados recursos empleados en


inventarios que pueden no tener una materialización inmediata y que está corriendo
con el riesgo de ser perdido o sufrir obsolescencia.

2.9 Exactitud del Inventario

Se determina midiendo el costo de las referencias que en promedio presentan


irregularidades con respecto al inventario lógico valorizado cuando se realiza el
inventario físico

Exactitud del Inventario= Valor de diferencia ($)

Valor total de Inventarios

Se toma la diferencia en costos del inventario teórico versus el físico inventariado,


para determinar el nivel de confiabilidad en un determinado centro de distribución.
Se puede hacer también para exactitud en el número de referencias y unidades
almacenadas.

2.10 Perspectiva interna

Este enfoque se refiere a los procesos de negocios internos. Los objetivos y las
métricas basadas en esta perspectiva permiten a los ejecutivos saber cómo está
funcionando su negocio, y si sus productos o servicios están cumpliendo con los
requerimientos del cliente.

En los procesos internos debemos ser excelentes y cómo deben ser alineados con
la visión general de la empresa.

18
Esta perspectiva del proceso interno permite identificar los procesos críticos
internos en donde se debe ser excelente, entregando propuestas de valor que
atraerán y retendrán clientes.

También analiza la adecuación de los procesos internos de la empresa de cara a la


obtención de la satisfacción del cliente y conseguir altos niveles de rendimiento
financiero.

Para alcanzar este objetivo se propone un análisis de los procesos internos desde
una perspectiva de negocio y una predeterminación de los procesos clave a través
de la cadena de valor.

Se distingue el siguiente tipo de proceso:

• Procesos de Operaciones. Desarrollados a través de los análisis de calidad y


reingeniería. el indicador es el relativo a costos.

2.11 Costos de inventarios

La Gestión de Inventarios es una actividad en la que consiste en tres tipos de


Costos:

• Costos asociados a los flujos

• Costos asociados a los stocks

• Costos asociados a los procesos

Costos asociados a los stocks, en este ámbito deberán incluirse todos los
relacionados con Inventarios. Estos serían entre otros Costos de almacenamiento
deterioros, perdidas y degradación de mercancías almacenadas, entre ellos
también tenemos los de rupturas de Stock, en este caso cuentan con una
componente fundamental los Costos financieros de las existencias, todo esto ya
serán explicados más adelante. Cuando se quiere conocer, en su conjunto los
costos de inventarios habrá que tener en cuenta todos los conceptos indicados. Por
el contrario, cuando se precise calcular los costos, a los efectos de toma de
19
decisiones, (por ejemplo, para decidir tamaño óptimo del pedido) solamente habrá
que tener en cuenta los costos evitables (que podrán variar en cada caso
considerado), ya que los costos no evitables, por propia definición permanecerán a
fuera sea cual fuera la decisión tomada.

Por último, dentro del ámbito de los procesos existen numerosos e importantes
conceptos que deben imputarse a los Costos de las existencias ellos son: Costos
de compras, de lanzamiento de pedidos y de gestión de la actividad.

Un caso paradigmático es el siguiente. En general, los Costos de transporte se


incorporan al precio de compras (¿por qué no incorporar también los Costos de
almacenamiento, o de la gestión de los pedidos?), como consecuencia de que en la
mayoría de los casos se trata de transportes por cuenta del proveedor incluidos de
manera más o menos tácita o explícita en el precio de adquisición. Pero incluso
cuando el transporte está gestionado directamente por el comprador se mantiene
esta práctica, aunque muchas veces el precio del transporte no es directamente
proporcional al volumen de mercancías adquiridas, sino que depende del volumen
transportado en cada pedido. En estas circunstancias el costo del transporte se
convierte también en parte del costo de lanzamiento del pedido.

La clasificación habitual de costos que utilizan los gestores de los inventarios es la


siguiente:

• Costos de almacenamiento, de mantenimiento o de posesión de stocks

• Costos de lanzamiento del pedido

• Costos de adquisición

• Costos de ruptura de stocks

2.12 Costos de almacenamiento

20
Los costos de almacenamiento, de mantenimiento o de posesión del Stock, incluyen
todos los costos directamente relacionados con la titularidad de los inventarios tales
como:

• Costos Financieros de las existencias

• Gastos del Almacén

• Seguros

• Deterioros, pérdidas y degradación de mercancía.

Dependen de la actividad de almacenaje, este gestionado por la empresa o no, o


de que la mercadería este almacenada en régimen de depósito por parte del
proveedor o de que sean propiedad del fabricante. Para dejar constancia de esta
complejidad, se incluye seguidamente una relación pormenorizado de los Costos de
almacenamiento, mantenimiento o posesión de los stocks en el caso más general
posible. No obstante, más adelante se expondrá un método simplificado para
calcular estos costos (la tasa anual) que se utiliza con mucha frecuencia.

La clasificación de los costos de almacenamiento que seguidamente se incluye los


clasifica por actividad (almacenaje y manutención), por imputabilidad (fija y variable)
y por origen directo e indirecto.

2.13 Costo de Almacenamiento por Unidad

Consiste en relacionar el costo del almacenamiento y el número de unidades


almacenadas en un período determinado

Costo de Almacenamiento por Unidad = Costo de almacenamiento

Número de Unidades Almacenadas

Sirve para comparar el costo por unidad almacenada y así decidir si es más rentable
subcontratar el servicio de almacenamiento o tenerlo propiamente.

21
2.14 Costos directos de almacenaje

2.14.1 Costos fijos

 Personal
 Vigilancia y Seguridad
 Mantenimiento del Almacén
 Reparaciones del Almacén
 Amortización del Almacén
 Amortización de estanterías y otros equipos de almacenaje
 Gastos financieros de inmovilización
 Costos variables
 Energía
 Agua
 Mantenimiento de Estanterías
 Materiales de reposición
 Reparaciones (relacionadas con almacenaje)
 Deterioros, pérdidas y degradación de mercancías.
 Gastos Financieros de Stock.

2.14.2 Costos indirectos de almacenaje

 De administración y estructura
 De formación y entrenamiento del personal

22
CAPITULO 3
MARCO
APLICATIVO

23
3.1 DESARROLLO

Como estudiantes de la carrera Ing. Industrial, nuestro deber es comprender las


necesidades que tienen las empresas, en este caso el Hotel Sunset Royal Beach
Resort, en el área de suministros para limpieza y mantenimiento, debido a que es
un almacén que se le dan muy poca importancia y sin embargo es uno de los
principales generadores de gastos innecesarios que se pudieran evitar si se llevara
un correcto manejo de dicho inventario.

Teniendo las bases del proyecto, lo más importante es tener el conocimiento de


cómo desarrollar un sistema que nos ayude de forma eficaz a mejorar el control de
los suministros para ello necesitaremos varias herramientas las cuales son muy
indispensables para poder logran un trabajo de muy buena calidad.

3.1.1 Lenguaje o herramienta de programación

En este capítulo se definen los lenguajes y herramientas necesarias para el


desarrollo de la aplicación web.

3.1.2 Tipos de lenguajes

3.1.2.1 Mysql

MySQL es un sistema de administración de bases de datos (Database Management


System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una
aplicación que permite gestionar archivos llamados de bases de datos.

Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas
relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza
multiples tablas para almacenar y organizar la información. MySQL fue escrito en C
y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo,
permitiendo su interactuación con los lenguajes de programación más utilizados
como PHP, Perl y Java y su integración en distintos sistemas operativos.

24
También es muy destacable, la condición de open source de MySQL, que hace que
su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo
descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo
y continuas actualizaciones, para hacer de MySQL una de las herramientas más
utilizadas por los programadores orientados a Internet.

Ilustración 1: Logo de MySql.

3.1.2.2 Bootstrap

Bootstrap es un framework CSS y Javascript diseñado para la creación de interfaces


limpias y con un diseño responsive. Además, ofrece un amplio abanico de
herramientas y funciones, de manera que los usuarios pueden crear prácticamente
cualquier tipo de sitio web haciendo uso de los mismos.

Ilustración 2: Logo de Bootstrap

Actualmente, Bootstrap es una de las alternativas más populares a la hora de


desarrollar tanto sitios webs como aplicaciones. Una de las principales ventajas que

25
ofrece es que permite la creación de sitios y apps 100% adaptables a cualquier tipo
de dispositivo. Una cuestión de suma importancia teniendo en cuenta que a día de
hoy son cada vez más los usuarios que acceden a Internet a través de sus teléfonos
y tabletas.

3.1.2.3 Jquery

JQuery es una librería de JavaScript (JavaScript es un lenguaje de programación


muy usado en desarrollo web). Esta librería de código abierto, simplifica la tarea de
programar en JavaScript y permite agregar interactividad a un sitio web sin tener
conocimientos del lenguaje.

jQuery es una biblioteca de JavaScript que simplifica la forma de desarrollar


aplicaciones web. Las aplicaciones que utilizan jQuery suelen necesitar menos
tiempo y menos código que las aplicaciones hechas con JS puro. Por este motivo,
jQuery es muy popular y se utiliza en montones de páginas web.

jQuery permite manipular elementos del DOM (textos, imágenes, enlaces, etc.) ,
cambiar el diseño CSS o realizar peticiones Ajax utilizando instrucciones simples, a
través de un código muy conciso y sencillo.

Ilustración 3: Logo de JQuery

3.1.2.4 Php

PHP es un lenguaje de scripting de servidor, y una poderosa herramienta para hacer


páginas web dinámicas e interactivas.

26
PHP es una alternativa ampliamente utilizada, gratuita y eficiente para competidores
como ASP de Microsoft.

PHP, acrónimo recursivo en inglés de PHP: Hypertext


Preprocessor (preprocesador de hipertexto), es un lenguaje de programación de
propósito general de código del lado del servidor originalmente diseñado para el
preprocesado de texto plano en UTF-8. Posteriormente se aplicó al desarrollo
web de contenido dinámico, dando un paso evolutivo en el concepto de aplicación
en línea, por su carácter de servicio.

Su implementación en los documentos HTML era aparentemente muy sencilla. Hay


que decir, que, PHP no genera HTML, sino que ofrece una salida de texto con
codificación UTF-8 compatible con los documentos HTML. El programador puede
dotar a la salida de los tag's propios del HTML y los exploradores más comunes
para navegar por internet, reconocerán muy rápidamente el formato UTF-8 y lo
adaptarán ofreciendo una salida entendible.

Fue uno de los primeros lenguajes de programación del lado del servidor que se
podían incorporar directamente en un documento HTML en lugar de llamar a un
archivo externo que procese los datos. El código es interpretado por un servidor
web con un módulo de procesador de PHP que genera el texto plano en formato
UTF-8, ampliamente reconocido por el estándar HTML, dando como resultado, en
los exploradores, una salida al usuario perfectamente entendible.

PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de
comandos que puede ser usada en aplicaciones gráficas independientes. Puede
ser usado en la mayoría de los servidores web al igual que en muchos sistemas
operativos y plataformas sin ningún costo.

Características

 Orientado al desarrollo de aplicaciones web dinámicas con acceso a


información almacenada en una base de datos.

27
 Es considerado un lenguaje fácil de aprender, ya que en su desarrollo se
simplificaron distintas especificaciones, como es el caso de la definición de
las variables primitivas, ejemplo que se hace evidente en el uso de php
arrays.

 El código fuente escrito en PHP es invisible al navegador web y al cliente, ya


que es el servidor el que se encarga de ejecutar el código y enviar su
resultado HTML al navegador.

 Capacidad de conexión con la mayoría de los motores de base de datos que


se utilizan en la actualidad, destaca su conectividad
con MySQL y PostgreSQL.

 Capacidad de expandir su potencial utilizando módulos (llamados


extensiones).

 Posee una amplia documentación en su sitio web oficial, entre la cual se


destaca que todas las funciones del sistema están explicadas y
ejemplificadas en un único archivo de ayuda.

 Es libre, por lo que se presenta como una alternativa de fácil acceso para
todos.

 Permite aplicar técnicas de programación orientada a objetos.

 No requiere definición de tipos de variables, aunque sus variables se pueden


evaluar también por el tipo que estén manejando en tiempo de ejecución.

 Tiene manejo de excepciones (desde PHP5).

 Si bien PHP no obliga a quien lo usa a seguir una determinada metodología


a la hora de programar, aun haciéndolo, el programador puede aplicar en su
trabajo cualquier técnica de programación o de desarrollo que le permita
escribir código ordenado, estructurado y manejable. Un ejemplo de esto son
los desarrollos que en PHP se han hecho del patrón de diseño Modelo Vista
Controlador (MVC), que permiten separar el tratamiento y acceso a los datos,

28
la lógica de control y la interfaz de usuario en tres componentes
independientes.

 Debido a su flexibilidad ha tenido una gran acogida como lenguaje base para
las aplicaciones WEB de manejo de contenido, y es su uso principal.

Ilustración 4: Logo de PHP

3.1.2.5 Java script

Java script es un lenguaje ligero e interpretado, orientado a objetos con funciones


de primera clase, más conocido como el lenguaje de script para páginas web, pero
también usado en muchos entornos sin navegador, tales como node.js o Apache
CouchDB..

El poder de JavaScript está disponible principalmente en lado frontend, agregando


mayor interactividad a la web, también puedes usar las librerías y framework como:
jquery, angular, backbone, react y demás, escritas sobre JavaScript, y que te
ayudan a crear una mejor experiencia de usuario en nuestros sitios web. De igual
manera JavaScript se puede utilizar en los servidores web. Node.JS es tu mejor
opción para usar este lenguaje del lado del servidor.

1) Es Liviano.
2) Multiplataforma, ya que se puede utilizar en Windows, Linux o Mac o en el
navegador de tu preferencia.

29
3) Es Imperativo y estructurado, mediante un conjunto de instrucciones indica
al computador qué tarea debe realizar.
4) Prototipado, debido a que usa prototipos en vez de clases para el uso de
herencia.
5) Orientado a objetos y eventos.
6) Es Interpretado, no se compila para poder ejecutarse.

Estas son las características que hacen de javascript un lenguaje que te permite
desarrollar aplicaciones gigantes y potentes, como lo es: google doc, facebook,
twitter e incluso capaz de ejecutarse en el servidor como un servidor Web muy
rápido, gracias a nodejs.

Ilustración 5: Logo de JavaScript

3.1.2.6 AJAX

AJAX permite que las páginas web se actualicen asincrónicamente intercambiando


datos con un servidor web entre bastidores. Esto significa que es posible actualizar
partes de una página web, sin recargar la página entera.

Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se


solicitan al servidor y se cargan en segundo plano sin interferir con la visualización
ni el comportamiento de la página, aunque existe la posibilidad de configurar las
peticiones como síncronas de tal forma que la interactividad de la página se detiene
hasta la espera de la respuesta por parte del servidor.

30
JavaScript es un lenguaje de programación (scripting language) en el que
normalmente se efectúan las funciones de llamada de Ajax mientras que el acceso
a los datos se realiza mediante XMLHttpRequest, objeto disponible en los
navegadores actuales. En cualquier caso, no es necesario que el contenido
asíncrono esté formateado en XML

Ilustración 6: Logo de Ajax

3.1.2.7 Html5

Es la última versión de HTML. El término representa dos conceptos diferentes: Se


trata de una nueva versión de HTML, con nuevos elementos, atributos y
comportamientos. Contiene un conjunto más amplio de tecnologías que permite a
los sitios Web y a las aplicaciones ser más diversas y de gran alcance.

HTML es un lenguaje que interpreta el navegador web para mostrar los sitios o
aplicaciones web tal y como estamos acostumbrados. En la Imagen 1 verás cómo
el navegador nos muestra un sitio web y en la Imagen 2 verás cómo se ve en
lenguaje HTML.

31
3.1.3 Herramientas a utilizar

3.1.3.1 sublime text 3

Sublime Text es un editor de texto y editor de código fuente está escrito


en C++ y Python para los plugins. Desarrollado originalmente como una extensión
de Vim, con el tiempo fue creando una identidad propia, por esto aún conserva un
modo de edición tipo vi llamado Vintage mode. Se puede descargar y evaluar de
forma gratuita. Sin embargo, no es software libre o de código abierto y se debe
obtener una licencia para su uso continuado, aunque la versión de evaluación es
plenamente funcional y no tiene fecha de caducidad. Está disponible para OS X,
Windows y Linux. Sublime Text utiliza un paquete de herramientas de interfaz de
usuario personalizado, optimizado para la velocidad y la belleza, aprovechando la
funcionalidad nativa de cada plataforma. Cuenta con una potente API de
complementos basada en Python. Junto con la API, cuenta con una consola
integrada en Python para experimentar interactivamente en tiempo real.

Características

 Minimapa: consiste en una pre visualización de la estructura del código, es


muy útil para desplazarse por el archivo cuando se conoce bien la estructura
de este.

 Multi Selección: Hace una selección múltiple de un término por diferentes


partes del archivo. Las selecciones múltiples le permiten cambiar
interactivamente muchas líneas a la vez, cambiar el nombre de las variables
con facilidad y manipular archivos de forma más rápido.

 Edición Dividida: Puede editar los archivos uno al lado del otro o dos
ubicaciones en el mismo archivo. También tantas filas y columnas como
desee, aprovechando el máximo rendimiento de su monitor de pantalla
ancha, o empleando varios monitores con varias ventanas y utilizando
múltiples divisiones en cada ventana.

32
 Multi Cursor: Crea cursores con los que podemos escribir texto de forma
arbitraria en diferentes posiciones del archivo.

 Multi Layout: Trae siete configuraciones de plantilla podemos elegir editar en


una sola ventana o hacer una división de hasta cuatro ventanas verticales o
cuatro ventanas en cuadrícula.

 Soporte nativo para infinidad de lenguajes: Soporta de forma nativa 43


lenguajes de programación y texto plano.

 Remarcado de sintaxis (SyntaxHighlight) configurable: El remarcado de


sintaxis es completamente configurable a través de archivos de configuración
del usuario.

 Búsqueda Dinámica: Se puede hacer búsqueda de expresiones regulares o


por archivos, proyectos, directorios, una conjunción de ellos o todo a la vez.

 Auto completado y marcado de llaves: Se puede ir a la llave que cierra o abre


un bloque de una forma sencilla.

 Soporte de Snippets y Plugins: Los snippets son similares a las macros o


los bundles además de la existencia de multitud de plugins o complemento.

 Configuración total de Keybindings: Todas las teclas pueden ser sobrescritas


a nuestro gusto.

 Acceso rápido a línea o archivo: Se puede abrir un archivo utilizando el


conjunto de teclas Cmd+P en Mac OS X o Ctrl+P en Windows y Linux
escribiendo el nombre del mismo o navegando por una lista.
Tecleando @ para saltar a símbolos, # para buscar en el archivo y: para ir a
un número de línea específico.

 Paleta de Comandos: Esta cuenta funciones poco utilizadas, como ordenar,


cambiar la sintaxis y cambiar la configuración de sangría. Con sólo pulsar la
combinación de teclas Ctrl + Mayús + P, puede buscar lo que quiere, sin
tener que navegar por los menús o recordar complejas combinaciones de
teclas.

33
 Coloreado y envoltura de sintaxis: Si se escribe en un lenguaje de
programación o marcado, resalta las expresiones propias de la sintaxis de
ese lenguaje para facilitar su lectura.

 Pestañas: Se pueden abrir varios documentos y organizarlos en pestañas.

 Resaltado de paréntesis e indentación: Cuando el usuario coloca el cursor


en un paréntesis, corchete o llave, resalta ésta y el paréntesis, corchete o
llave de cierre o apertura correspondiente.

 Sin impresión: No cuenta con la posibilidad directa de imprimir, se requiere


el uso de complementos de terceros.

 Modo Libre de Distracción Distraction Free Mode: es pantalla completa,


edición sin cromo, con nada más que el texto en el centro de la pantalla.
Puede mostrar incrementalmente elementos de la interfaz de usuario, como
las pestañas y el panel de búsqueda, según los necesite.

Ilustración 7: Logo de Sublime Text

34
3.2 Código de la base de datos

CREATE TABLE `categories` (


`id` int(11) UNSIGNED NOT NULL,
`name` varchar(60) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Volcado de datos para la tabla `categories`
--

INSERT INTO `categories` (`id`, `name`) VALUES


(1, 'Repuestos');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `media`
--

CREATE TABLE `media` (


`id` int(11) UNSIGNED NOT NULL,
`file_name` varchar(255) NOT NULL,
`file_type` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla `media`
--

INSERT INTO `media` (`id`, `file_name`, `file_type`) VALUES


(1, 'filter.jpg', 'image/jpeg');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `products`
--

CREATE TABLE `products` (


`id` int(11) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`quantity` varchar(50) DEFAULT NULL,
`buy_price` decimal(25,2) DEFAULT NULL,
`sale_price` decimal(25,2) NOT NULL,
`categorie_id` int(11) UNSIGNED NOT NULL,

35
`media_id` int(11) DEFAULT '0',
`date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Volcado de datos para la tabla `products`
--

INSERT INTO `products` (`id`, `name`, `quantity`, `buy_price`,


`sale_price`, `categorie_id`, `media_id`, `date`) VALUES
(1, 'Filtro de gasolina', '100', '5.00', '10.00', 1, 1, '2017-06-16
07:03:16');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `sales`
--

CREATE TABLE `sales` (


`id` int(11) UNSIGNED NOT NULL,
`product_id` int(11) UNSIGNED NOT NULL,
`qty` int(11) NOT NULL,
`price` decimal(25,2) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `users`
--

CREATE TABLE `users` (


`id` int(11) UNSIGNED NOT NULL,
`name` varchar(60) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`user_level` int(11) NOT NULL,
`image` varchar(255) DEFAULT 'no_image.jpg',
`status` int(1) NOT NULL,
`last_login` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla `users`

36
--

INSERT INTO `users` (`id`, `name`, `username`, `password`, `user_level`,


`image`, `status`, `last_login`) VALUES
(1, 'Admin Users', 'admin', 'd033e22ae348aeb5660fc2140aec35850c4da997',
1, 'pzg9wa7o1.jpg', 1, '2017-06-16 07:11:11'),
(2, 'Special User', 'special',
'ba36b97a41e7faf742ab09bf88405ac04f99599a', 2, 'no_image.jpg', 1, '2017-
06-16 07:11:26'),
(3, 'Default User', 'user', '12dea96fec20593566ab75692c9949596833adc9',
3, 'no_image.jpg', 1, '2017-06-16 07:11:03');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `user_groups`
--

CREATE TABLE `user_groups` (


`id` int(11) NOT NULL,
`group_name` varchar(150) NOT NULL,
`group_level` int(11) NOT NULL,
`group_status` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla `user_groups`
--

INSERT INTO `user_groups` (`id`, `group_name`, `group_level`,


`group_status`) VALUES
(1, 'Admin', 1, 1),
(2, 'Special', 2, 0),
(3, 'User', 3, 1);

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `categories`
--
ALTER TABLE `categories`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `name` (`name`);

37
--
-- Indices de la tabla `media`
--
ALTER TABLE `media`
ADD PRIMARY KEY (`id`),
ADD KEY `id` (`id`);

--
-- Indices de la tabla `products`
--
ALTER TABLE `products`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `name` (`name`),
ADD KEY `categorie_id` (`categorie_id`),
ADD KEY `media_id` (`media_id`);

--
-- Indices de la tabla `sales`
--
ALTER TABLE `sales`
ADD PRIMARY KEY (`id`),
ADD KEY `product_id` (`product_id`);

--
-- Indices de la tabla `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `username` (`username`),
ADD KEY `user_level` (`user_level`);

--
-- Indices de la tabla `user_groups`
--
ALTER TABLE `user_groups`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `group_level` (`group_level`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `categories`
--
ALTER TABLE `categories`

38
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT de la tabla `media`
--
ALTER TABLE `media`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT de la tabla `products`
--
ALTER TABLE `products`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT de la tabla `sales`
--
ALTER TABLE `sales`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT=10;
--
-- AUTO_INCREMENT de la tabla `user_groups`
--
ALTER TABLE `user_groups`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `products`
--
ALTER TABLE `products`
ADD CONSTRAINT `FK_products` FOREIGN KEY (`categorie_id`) REFERENCES
`categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `sales`
--
ALTER TABLE `sales`
ADD CONSTRAINT `SK` FOREIGN KEY (`product_id`) REFERENCES `products`
(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--

39
-- Filtros para la tabla `users`
--
ALTER TABLE `users`
ADD CONSTRAINT `FK_user` FOREIGN KEY (`user_level`) REFERENCES
`user_groups` (`group_level`) ON DELETE CASCADE ON UPDATE CASCADE;

40
3.3 Home Page

<?php
$page_title = 'Home Page';
require_once('includes/load.php');
if (!$session->isUserLoggedIn(true)) { redirect('index.php', false);}
?>
<?php include_once('layouts/header.php'); ?>
<div class="row">
<div class="col-md-12">
<?php echo display_msg($msg); ?>
</div>
<div class="col-md-12">
<div class="panel">
<div class="jumbotron text-center"> <br><br>
<img src="img/logo-royal.jpg"><br><br>
<!-- <h1>SUNSET ROYAL BEACH RESORT</h1> -->

</div>
</div>
</div>
</div>
<?php include_once('layouts/footer.php'); ?>

41
3.4 Login de acceso

<?php
ob_start();
require_once('includes/load.php');
if($session->isUserLoggedIn(true)) { redirect('home.php', false);}
?>
<?php include_once('layouts/header.php'); ?>

<img src="img/logo-royal.jpg" style="position: absolute; margin-top:


10%;">

<div class="login-page">
<div class="text-center">
<h1>Bienvenido</h1>
<p>Iniciar sesión </p>
</div>
<?php echo display_msg($msg); ?>
<form method="post" action="auth.php" class="clearfix">
<div class="form-group">
<label for="username" class="control-label">Usario</label>
<input type="name" class="form-control" name="username"
placeholder="Usario">
</div>
<div class="form-group">
<label for="Password" class="control-
label">Contraseña</label>
<input type="password" name= "password" class="form-control"
placeholder="Contraseña">
</div>
<div class="form-group">
<button type="submit" class="btn btn-info pull-
right">Entrar</button>
</div>
</form><br>
</div>
<?php include_once('layouts/footer.php'); ?>

42
3.5 Controladores de la base de datos

<?php
require_once(LIB_PATH_INC.DS."config.php");

class MySqli_DB {

private $con;
public $query_id;

function __construct() {
$this->db_connect();
}

/*--------------------------------------------------------------*/
/* Function for Open database connection
/*--------------------------------------------------------------*/
public function db_connect()
{
$this->con = mysqli_connect(DB_HOST,DB_USER,DB_PASS);
if(!$this->con)
{
die(" Database connection failed:". mysqli_connect_error());
} else {
$select_db = $this->con->select_db(DB_NAME);
if(!$select_db)
{
die("Failed to Select Database". mysqli_connect_error());
}
}
}
/*--------------------------------------------------------------*/
/* Function for Close database connection
/*--------------------------------------------------------------*/

public function db_disconnect()


{
if(isset($this->con))
{
mysqli_close($this->con);
unset($this->con);
}
}
/*--------------------------------------------------------------*/
/* Function for mysqli query
/*--------------------------------------------------------------*/

43
public function query($sql)
{

if (trim($sql != "")) {
$this->query_id = $this->con->query($sql);
}
if (!$this->query_id)
// only for Develope mode
die("Error en esta consulta :<pre> " . $sql ."</pre>");
// For production mode
// die("Error on Query");

return $this->query_id;

/*--------------------------------------------------------------*/
/* Function for Query Helper
/*--------------------------------------------------------------*/
public function fetch_array($statement)
{
return mysqli_fetch_array($statement);
}
public function fetch_object($statement)
{
return mysqli_fetch_object($statement);
}
public function fetch_assoc($statement)
{
return mysqli_fetch_assoc($statement);
}
public function num_rows($statement)
{
return mysqli_num_rows($statement);
}
public function insert_id()
{
return mysqli_insert_id($this->con);
}
public function affected_rows()
{
return mysqli_affected_rows($this->con);
}
/*--------------------------------------------------------------*/
/* Function for Remove escapes special
/* characters in a string for use in an SQL statement

44
/*--------------------------------------------------------------*/
public function escape($str){
return $this->con->real_escape_string($str);
}
/*--------------------------------------------------------------*/
/* Function for while loop
/*--------------------------------------------------------------*/
public function while_loop($loop){
global $db;
$results = array();
while ($result = $this->fetch_array($loop)) {
$results[] = $result;
}
return $results;
}

$db = new MySqli_DB();

?>

3.6 Conexión del sistema a la base de datos


<?php

define( 'DB_HOST', 'localhost' ); // Set database host


define( 'DB_USER', 'nombre_del_usuario' ); // Set database user
define( 'DB_PASS', 'contraseña_del_usuario' ); // Set database password
define( 'DB_NAME', 'nombre_base_de_datos' ); // Set database name

?>

45
CAPITULO 4
RESULTADO

46
Al dar ideas y propuestas de solución para la problemática de manejo de inventarios,
se puede realizar una base de datos que será almacenada en un servidor privado y
ensamblada a una red en el cual se podrá acceder desde las plataformas de
exploración como son Google Chrome, Mozilla Firefox, Explorer Edge y otros,
utilizando lenguaje de programación como .NET, ASP.NET, AppleScript, APL y
Python. Algo importante que debemos tener en cuenta es que todo se puede
resolver con programación, solo necesitas implementar tu imaginación para crear
un algoritmo que resuelva tu problemática.

Debido a que nuestra propuesta está pensada para resolver un problema de


inventario, daremos pasos de creación de un sistema que permita el correcto control
de nuestro almacén.

Para almacenar información y datos de forma segura y confiable, se debe crear una
base de datos que funcione de forma local, que en un futuro puede ser en línea para
así tener acceso inmediato desde cualquier parte y en cualquier dispositivo.

4.1 Base de datos. La creación de una base de datos se debe realizar de forma
eficiente, para ello se utilizará MySql, que a través de la plataforma de xampp
puede ser manipulada desde nuestro ordenador.

47
Ilustración 8: Panel de Control de Xampp

En esta terminal tendremos acceso a nuestra base de datos directamente en


la cual se pueden modificar con facilidad todos los campos que ya están
registrados o si se requiere agregar uno nuevo.

Ilustración 9: Terminal de Xampp

48
Se visualizan las tablas de forma ordenada donde se clasifica nuestra
información dependiendo de cómo queramos utilizarlo, por ejemplo, una
tabla de productos, clasificados por marca o por tipo, una de sucursales (esto
puede ser muy valioso ya que se puede utilizar en todas las sucursales
existentes), una tabla más para los insumos a solicitar y los que ya estén
saliendo del almacén, otra para elaborar los reportes que cantidades y el más
importante seria de los usuarios, sobre las personas que tendrían acceso al
sistema.

4.2 Crud (Inicio de código). Una vez creada la base de datos se debe iniciar el
desarrollo visual del sistema, en la terminal de Sublime Text, para desarrollo se
crea un Crud de aplicación, la cual nos ayudara a mantener un orden de código
y la lectura correcta de cómo está funcionando la aplicación.
La vista principal de la pantalla después de haberse logueado sería la siguiente,
en esta vista se puede apreciar los diferentes apartados a los que tendrán
acceso los administradores del almacén, también tendrían acceso a un apartado
personal donde podrán cambiar su contraseña y nombre del usuario y como
imagen principal el logotipo de la empresa.

Ilustración 10: Home Page del sistema

49
4.3 Panel de control. Para poder visualizar un resumen del estado actual de los
suministros, en el apartado “Panel de Control” generaremos un estado de
recuperación de datos, los cuales se harán automáticamente después de cada
operación que se realice.
Se podrá visualizar la cantidad de usuarios que están dados de alta al sistema,
todas las categorías de productos que se han registrados, cantidad de productos
que ya estén en la base de datos y el contador de salidas de productos.
Así también se mostrará el producto que más se solicita, los últimos productos
de salida y los productos recién agregados al inventario.

Ilustración 11: Pantalla de Inicio del sistema

4.4 Usuarios. En el portal “Usuarios” el administrador del sistema podrá agregar a


nuevos personales, a los cuales se le podrán restringir las actividades que ya
estarán pre-definidas por niveles de acceso.
El “Administrador” podrá modificar, eliminar y agregar; tendrá libre acceso del
sistema, el segundo nivel serán los “Special” y solo tendrán acceso para agregar
nuevos productos y modificar sus categorías del mismo y en el tercer nivel “User”

50
se restringirá el sistema por completo y solo podrán ingresar para registrar
nuevas salidas de productos del almacén.

Ilustración 12: Panel de usuarios

En una tabla se registrarán los nombres, el nombre de usuario, tipo de rol


que tendrá y lo más importante es que las contraseñas no se verán reflejadas
en la tabla.

El formulario para hacer nuevos registros seria de la siguiente manera,


solicitando como requisito, seleccionar el rol que llevara a cabo.

51
Ilustración 13: Formulario de registro de usuarios

4.5 Categorías. Las categorías van a variar dependiendo de las maneras de


clasificar los productos de la empresa. La lista de las categorías podrá ser
editadas y/o eliminadas por el administrador solamente.

Ilustración 14: Panel de categorías

4.6 Productos. Después de haber registrado las categorías, podremos registrar los
productos y agregarlos a las categorías correspondientes. Los datos requeridos;
52
nombre del producto, cantidad y precio, así como seleccionar una categoría y
opcional el agregarle su respectiva imagen.

Ilustración 15: Formulario para registros de productos

4.7 Media. El apartado de Media, permite subir imágenes al sistema, las cuales
pueden ser usados al momento de registras los productos, para así tener una
vista previa del mismo durante la navegación dentro del inventario.

Ilustración 16: Gestor de multimedia para los productos

53
Las imágenes serán seleccionadas desde el explorador de archivos de la
computadora donde se esté navegando.

Ilustración 17: Sistema de selección de archivos multimedia

4.8 Salidas. Las salidas, son los pedidos que se realizan internamente para solicitar
productos del almacén, estas se registran como gastos que son los productos
totales usados por la empresa a través de estas salidas se van generando
reportes diarios, por mes e intervalos de fechas que se pueden seleccionar por
el usuario.

54
Ilustración 18: Registro de Salidas

Para agregar una nueva salida, utilizamos un buscador que ayudan a filtrar
los productos, una vez seleccionado el producto deseado se podrá modificar
la cantidad deseada, el precio y otros datos que ahí aparecen.

Ilustración 19: Generador de salidas frecuentes

Al agregar la salida nos re direcciona a un apartado donde están las salidas


anteriores y la nueva, en ese panel se pueden modificar algunos detalles por
si algún dato fue erróneo.

55
Ilustración 20: Botón editar salidas

4.9 Reportes de Salidas. El último apartado es de reportes, donde podemos


visualizar todos los movimientos de salidas que hubieron ya sea diario o
mensual.

Ilustración 21: Generador de reportes

56
Para imprimir un reporte se deberá seleccionar el apartado de “Salidas por
fechas”, la cual nos permitirá seleccionar el intervalo de fechas de las cuales
se necesitan los datos.

Ilustración 22: Reportes por fechas

Al generarlo nos envía una pestaña, la cual dándole “Ctrl + P” imprimir, se


podrá descargar en formato PDF, o imprimirlo directamente a una impresora
(en caso de tener una instalada). En la lista se mostrarán todas las salidas
que hubo en el periodo de tiempo seleccionado.

57
Ilustración 23: Formato unico de reporte generado

4.10 Login. Teniendo en cuenta que los datos son muy valiosos siempre hay que
protegerlo cuando se trata de trabajar en un sistema virtual debido a la
delincuencia informática que hoy en día se vive, para ello se genera un login en
el cual se tendrá que ingresar las credenciales personales de cada usuario.

Ilustración 24: Formulario de inicio de sesión

58
4.11 Perfil de usuarios. Una vez todos los usuarios estén registrados y asignados
a sus respectivos niveles tendrán un perfil personal donde podrán modificar sus
credenciales de acceso.

Ilustración 25: Perfil principal del usuario

ANÁLISIS DE RESULTADOS

Durante el desarrollo del proyecto se realizó una investigación sobre los sistemas de
manejo de inventarios. Se eligió realizar el sistema en el lenguaje de programación PHP y
JavaScript utilizando MySql como principal para la base de datos.

Loa sistemas comerciales existentes tienen una amplia variedad de posibilidades, el


sistema desarrollado es una menor escala para el control de inventarios y almacén en una
empresa. Los resultados en concreto son:

1. Una interfaz para controlar las entradas y salidas del almacén.


2. Una interfaz para obtener reporte con información sobre el movimiento de los
artículos y para introducir nueva información al sistema.

59
La principal característica del sistema es que se diseñó para que cualquier usuario sin
ningún conocimiento de programación pueda utilizarlo.

Las ventajas que aporta el sistema a la empresa serán:

 Reducción de gastos.
 Conocimiento de artículos que no deben faltar en el almacén.
 Control sobre las existencias del almacén.
 Conocimiento del comportamiento de los gastos por determinado periodo de
tiempo.

60
CONCLUSIÓN

El desarrollo del software en general requirió de un estudio más profundo del


lenguaje de programación que se utilizaron para el mimo, JavaScript, PHP que
fueron los principales durante todo el desarrollo; gracias al auge de estos lenguajes
fue muy sencillo encontrar librerías útiles, así como información y manuales. Lo más
importante del desarrollo fue la creación de la base de dato, la cual requería de
mucha paciencia para poder relacionar las tablas y que funcione de forma correcta
tomando en cuenta la conexión que llevara dentro del servidor y la aplicación en
general, debido que a través de ella se harían las consultas y modificaciones de la
información almacenada.

Una de las partes más complejas respecto al proyecto fue, la creación de manuales
los cuales ayudarían a los usuarios a para logran que entiendan el funcionamiento
de la aplicación, además como es un programa que funciona dentro de un servidor,
se requiere mucha seguridad en el aspecto que los datos ahí almacenados deben
estar protegidos de hackers y/o crackers. Para ello se deberá crear un manual
técnico de desarrollo el cual permitirá crear actualizaciones de la aplicación y
corregir errores que se presente durante su funcionamiento.

61
ANEXO

Antes de la residencia Profesional

Ilustración 26: Almacén 1 Ilustración 27: Almacén 2

62
Después de la residencia profesional

Ilustración 28: Almacén 3 Ilustración 29: Almacén 4

63
FUENTES DE INFORMACIÓN

https://www.gestiopolis.com/que-es-inventario-tipos-utilidad-contabilizacion-y-valuacion/

http://www.atoxgrupo.com/website/noticias/clasificacion-inventarios-abc

https://www.ecured.cu/Sistemas_de_control_de_inventarios

https://hipodec.up.edu.mx/blog/que-es-control-inventario

https://www.php.net/manual/es/intro-whatis.php

https://developer.mozilla.org/es/docs/Web/JavaScript

https://www.mysql.com/

https://mex.000webhost.com/

LINK DEL LA APLICACIÓN FUNCIONANDO EN UN SERVIDOR EN TIEMPO


REAL

https://hotel-sunset.000webhostapp.com/index.php

64

Potrebbero piacerti anche