UNIVERSIDAD DE HUANUCO
FACULTAD DE INGENIERÍA
E.A.P. DE INGENIERÍA DE SISTEMAS E INFORMÁTICA
TRABAJO DE SUFICIENCIA PROFESIONAL
“IMPLEMENTACIÓN DE UN SISTEMA INFORMÁTICO DE CAJA Y
ALMACEN PARA LA GESTIÓN DEL RECREO FALCON DE LA CIUDAD
DE HUÁNUCO”
PARA OPTAR EL TÍTULO PROFESIONAL DE INGENIERO DE
SISTEMAS E INFORMÁTICA
Presentado por el Bachiller:
SANTIAGO GONZALES, ABEL
Asesor:
MG. ZACARÍAS VENTURA, HÉCTOR RAÚL
HUÁNUCO - PERÚ
2016
DECICATORIA:
A mi familia por su apoyo y guía
incondicional.
II
AGRADECIMIENTO:
A las personas que me apoyaron
e hicieron que el trabajo se
efectúe con éxito en especial a
aquellos que me compartieron sus
conocimientos.
III
ÍNDICE
INTRODUCCIÓN ................................................................................................. X
RESUMEN ..........................................................................................................XII
SUMARY ........................................................................................................... XIII
CAPÍTULO I ......................................................................................................... 14
ASPECTOS DE LA ENTIDAD RECEPTORA ................................................ 14
1.1
NOMBRE O RAZÓN SOCIAL .......................................................... 14
1.2
RUBRO................................................................................................. 14
1.3
UBICACIÓN / DIRECCIÓN ............................................................... 14
1.4
RESEÑA............................................................................................... 14
CAPITULO II ........................................................................................................ 15
ASPECTOS DEL ÁREA O SECCIÓN ............................................................. 15
CAPITULO III ....................................................................................................... 16
IDENTIFICACIÓN DE LA SITUACIÓN PROBLEMÁTICA ........................... 16
3.1.
PROBLEMA DE INVESTIGACIÓN .................................................. 16
3.1.1. DESCRIPCIÓN DEL PROBLEMA ................................................... 16
3.1.2. FORMULACIÓN DEL PROBLEMA ................................................. 17
3.1.2.1. PROBLEMA PRINCIPAL .......................................................... 17
3.1.2.2. PROBLEMAS ESPECÍFICOS .................................................. 17
3.1.3. OBJETIVOS......................................................................................... 17
3.1.3.1. OBJETIVO GENERAL ............................................................... 17
3.1.3.2. OBJETIVOS ESPECÍFICOS .................................................... 17
IV
3.1.4. JUSTIFICACIÓN ................................................................................. 17
3.1.5. HIPÓTESIS .......................................................................................... 18
3.1.6. VARIABLES ......................................................................................... 18
3.1.6.1. VARIABLE INDEPENDIENTE .................................................. 18
3.1.6.2. VARIABLE DEPENDIENTE ...................................................... 18
3.1.7. OPERACIONALIZACIÓN DE VARIABLES .................................... 18
3.1.8. LIMITACIONES ................................................................................... 18
3.1.9. VIABILIDAD ......................................................................................... 19
3.1.9.1. RECURSOS HUMANOS:.......................................................... 19
3.1.9.2. RECURSOS ECONÓMICOS: .................................................. 19
3.1.9.3. RECURSOS TECNOLÓGICOS (MATERIALES) .................. 19
3.2.
MARCO TEORICO ............................................................................. 19
3.2.1. ANTECEDENTES DE LA INVESTIGACIÓN ................................. 19
3.2.1.1. INTERNACIONALES ................................................................. 19
3.2.1.2. NACIONALES ............................................................................. 21
3.2.2. BASES TEÓRICAS ............................................................................ 22
3.2.3. DEFINICIONES CONCEPTUALES ................................................. 31
3.3.
MATERIALES Y MÉTODOS............................................................. 32
3.3.1. TIPO DE INVESTIGACIÓN............................................................... 32
CAPITULO IV ...................................................................................................... 33
APORTES PARA LA SOLUCIÓN DEL PROBLEMA .................................... 33
4.1.
ANÁLISIS DEL SISTEMA PROPUESTO ...................................... 33
V
4.2.
DISEÑO DE LA BASE DE DATOS .................................................. 38
4.3.
MODELO DE CASOS DE USO ....................................................... 43
4.4.
DIAGRAMA DE ROBUSTEZ POR MÓDULOS ............................. 63
4.5.
DIAGRAMA DE SECUENCIA POR MÓDULOS ........................... 65
4.6.
CODIFICACIÓN .................................................................................. 68
4.7.
PRUEBAS ............................................................................................ 87
4.8.
IMPLANTACIÓN DEL SISTEMA ..................................................... 95
CONCLUSIONES ............................................................................................. 113
RECOMENDACIONES .................................................................................... 114
REFRENCIAS BIBLIOGRÁFICAS ................................................................. 115
ANEXOS............................................................................................................. 116
MATRIZ DE CONSISTENCIA ..................................................................... 116
VI
ÍNDICE DE TABLAS
Tabla 1 CONTROL DE CAJA Y EGRESOS .................................................. 33
Tabla 2 FUNCIONALIDAD ............................................................................ 34
Tabla 3 DESCRIPCIÓN DEL TIPO DE ACTOR ........................................... 37
Tabla 4 EFINICION DE ACCESO AL SISTEMA .......................................... 38
Tabla 5 Sección principal autenticar usuario .............................................. 45
Tabla 6 Curso normal de los eventos autenticar usuarios ....................... 45
Tabla 7 Cursos alternos, autenticar usuarios ............................................. 46
Tabla 8 Especificación de caso de uso de administración de usuarios . 47
Tabla 9 Curso normal de los eventos de administrador de usuarios...... 47
Tabla 10 Cursos alternos, Administrar usuario ......................................... 48
Tabla 11 Seccion nuevo usuario (curso normal de los eventos) ............ 49
Tabla 12 Cursos alternos, seccion nuevo usuario ..................................... 49
Tabla 13 Seccion eliminar usuario............................................................... 50
Tabla 14 Cursos alternos, seccion eleiminar usuario ............................... 50
Tabla 15 Especificación de caso de uso de administrar mesas .............. 51
Tabla 16 Curso normal de eventos de caso de uso de administrar
.... 52
Tabla 17 Cursos alternativos ......................................................................... 52
Tabla 18 Sección administrar nuevas mesas ............................................. 53
Tabla 19 Cursos alternos ............................................................................... 53
Tabla 20 Especificación de caso de uso consultar ventas ....................... 54
Tabla 21 Curso normal de eventos de caso de uso (CU) de consulta de
ventas .............................................................................................................. 54
Tabla 22 Cursos alternativos ......................................................................... 55
Tabla 23 Especificación de caso de uso administrar inventario .............. 56
VII
Tabla 24 Curso normal de eventos de caso de uso (CU) administrar
inventario. ........................................................................................................ 56
Tabla 25 Cursos alternativos de administrar inventario ............................ 57
Tabla 26 Curso norma de los eventos sección ingresar inventario. ....... 57
Tabla 27 Cursos alternativos sección ingresar inventario ........................ 58
Tabla 28 Curso norma de los eventos sección ingresar categoría. ........ 58
Tabla 29 Cursos alternativos sección ingresar categoría ......................... 59
Tabla 30 Sección principal administrar productos ........................................... 60
VIII
INDICE DE GRAFICOS
Gráfico 1 MODELO ENTIDAD RELACIÓN ................................................. 41
Gráfico 2 MODELO RELACIONAL DE LA BASE DE DATOS .................. 42
Gráfico 3Subsistema de facturación ............................................................ 43
Gráfico 4 Subsistema de egresos y caja ..................................................... 43
Gráfico 5 Subsistema de Usuarios ............................................................... 44
Gráfico 6 Subsistema de Pedidos ................................................................ 44
Gráfico 7 Descripción de casos de uso de autenticar al usuario ....................... 45
Gráfico 8 Diagrama de caso de uso de administrador de usuarios ................... 47
Gráfico 9 Diagrama de caso de uso de administrar mesas ............................... 51
Gráfico 10 Caso de uso consultar ventas .......................................................... 54
Gráfico 11 Caso de uso de administrar inventario............................................ 55
Gráfico 12 Caso de uso administrar productos ................................................. 59
IX
INTRODUCCIÓN
Cuando se delibera sobre el fundamento del uso de computadoras en las
empresas o instituciones, la respuesta idónea parece bastante obvia, para
registrar los eventos que van aconteciendo.
Sin embargo existe un motivo aún mucho más importante y no tan obvio, y
es que la información puede ser utilizada como respaldo en la toma de
decisiones.
Sin importar el tamaño o rubro de una empresa o institución, la
administración exitosa de la misma estará dramáticamente influenciada por
la precisión de sus datos y la adopción de decisiones acertadas. Los enlaces
de comunicación y las bases de datos permiten el acceso a recursos de
información que están más allá de la inmediatez física, sobrepasando las
limitaciones geográficas.
Las computadoras consienten la utilización de incalculables masas de
información las cuales, no eran concebibles hasta hace unos años. Pero no
sólo basta la disponibilidad de la cantidad de información, se trata de contar
con información de calidad.
Los sistemas de información basados en
computadoras no sólo son capaces de suministrarnos información de calidad
oportunamente, sino que también consiguen respaldar en la toma de
decisiones de la empresa o institución.
El restaurante Falcón ubicado en el Jirón 2 de Mayo, número 190,
ubicado en la ciudad de Huánuco, es una empresa que ofrece una
gastronomía de platos típicos líder en la ciudad, reconocida por ofrecer una
variada carta de comida típica huanuqueña.
El sistema de información que se ha realizado para el Restaurante
Falcón, con un conjunto de elementos orientados a generar una solución
óptima
utilizando
diversas
herramientas que
permiten
resolver
las
dificultades que presentan los procesos desarrollados en el establecimiento
tales como: Pedidos por parte del cliente, visualización de estos en la cocina
y control de inventarios. Como primera medida se establece la manera como
se deben tomar los requerimientos del sistema y se define claramente lo que
X
la empresa necesita, de allí se han tomado decisiones en cuanto a diseño y
factibilidad del sistema que se implementó. La información en esta etapa se
obtiene mediante entrevistas con los socios del Restaurante Falcón y
observación directa, actuando como clientes en el propio establecimiento.
En la etapa de diseño, se modelan los módulos que harán parte de la
integración total del sistema, así como la base de datos y la distribución de
los módulos, es importante destacar que la presencia del cliente en esta
etapa del proyecto es de vital importancia ya que se define la interfaz gráfica
que tendrá el software.
Finalmente se instaló el sistema de informático y se da una inducción
completa al gerente y operarios de la empresa para que aprendan el manejo
adecuado del sistema de información
XI
RESUMEN
El presente trabajo de suficiencia profesional tiene como objetivo principal el
de Implementar un sistema informático para mejorar la calidad del servicio
en el RECREO FALCON, asimismo tiene como objeticos específicos la
Mejora de la gestión de ventas, caja y almacén en el RECREO FALCON.
Asimismo, el presente trabajo de suficiencia profesional es de Tipo Aplicada
o Tecnológica. No aplicable a hipótesis, por el tipo de investigación que se
usa, y culmina con la conclusión que se mejoró en la gestión de ventas, caja
y almacén es más que evidente que se mejoró la calidad en el servicio en el
RECREO FALCON.
Se recomienda con respecto a la atención al cliente, ya que el sistema ha
mejorado la velocidad de atención con el cliente se le recomienda al
personal una pequeña capacitación de atención para así apoyar a que el
sistema cumpla la función para la que ha sido creada.
Palabras claves: Sistema informático, desarrollo de software, metodología
ICONIX.
.
XII
SUMARY
The main objective of this work is to implement a computer system to
improve the quality of service in the RECREO FALCON, also has as specific
objectives the improvement of the management of sales, collection and
storage in the RECREO FALCON.
Also the present work of professional sufficiency is of Applied or
Technological Type. Not applicable to hypothesis, because of the type of
research used, and culminates in the conclusion that it was improved in the
management of sales, collections and warehouse it is more than evident that
the quality of the service in the RECREO FALCON was improved.
It is recommended with respect to customer service, since the system has
improved the speed of customer service, it is recommended that staff receive
a small training to support the system to fulfill the function for which it was
created.
Keywords: Information system, software development, ICONIX methodology.
XIII
CAPÍTULO I
ASPECTOS DE LA ENTIDAD RECEPTORA
1.1 NOMBRE O RAZÓN SOCIAL
RECREO FALCON
1.2 RUBRO
RESTAURANTE
1.3 UBICACIÓN / DIRECCIÓN
JR. DOS DE MAYO. #190 – HUÁNUCO.
1.4 RESEÑA
Recreo Falcon, ofrece platos típicos de la región Huánuco, como
Pachamanca, Chancho al cilindro, cuy frito, chicharrón, trucha, caldo de
gallina, además de bebidas, tragos, postres, entre otros.
VISIÓN
Busca ser líder a nivel regional, brindando un servicio de calidad a través
del buen sabor de las comidas que lo caracteriza, y manteniendo siempre
la capacitación constante de sus colaboradores.
MISIÓN
Somos una empresa gastronómica que ofrece una variedad de platos
típicos de la región, comprometidos con el buen sabor de las comidas
para satisfacer a todos nuestros clientes, ofreciendo un ambiente
acogedor para su comodidad.
14
CAPITULO II
ASPECTOS DEL ÁREA O SECCIÓN
El Recreo Falcon tiene como definición de calidad de servicio al cliente
el cumplir con los requisitos que exige el cliente, ya que el satisfacerlos debe
ser parte fundamental de la filosofía del negocio y el enfoque central del plan
estratégico de toda la empresa ya que el mejorar continuamente el producto
y el servicio de calidad significa el elemento clave del éxito de la empresa.
15
CAPITULO III
IDENTIFICACIÓN DE LA SITUACIÓN PROBLEMÁTICA
3.1.
PROBLEMA DE INVESTIGACIÓN
3.1.1. DESCRIPCIÓN DEL PROBLEMA
En Huánuco existen una gran cantidad de restaurantes entre los cuales
están los recreos, de comida típica y especializada.
En los recreos el costo va de acuerdo al servicio y la calidad de los
platos que se consumen. El servicio, la decoración, la ambientación,
comida y bebidas son esmeradamente escogidos. Así mismo, para
perfeccionar la atención a sus clientes se requiere que:
Los alimentos sean cocinados al momento, por lo que es
necesario tener la información de los pedidos lo más pronto
posible.
El cliente observe el listado de pedidos que ha realizado y el
costo total de los mismos.
Sea más ágil el proceso de pagos, por lo que se requiere que
pueda conocer el valor de su consumo rápidamente.
Actualmente los recreos de Huánuco tienen muchas exigencias en
cuanto a dar un buen servicio, como por ejemplo que el cliente se
sienta cómodo al realizar un pedido, esto muchas veces no se da
debido a que los meseros no se abastecen en atender rápidamente a
las mesas, además de que se toman las órdenes manualmente para
después ir a la cocina y dar a conocer el pedido realizado por el cliente.
De esta manera, el proceso lleva mucho tiempo y más cuando el recreo
está lleno.
Para resolver la problemática presentada, se propone el Desarrollo de
un Sistema informático para la gestión de ventas (comidas y otros
enseres como gaseosas, cervezas, etc.), la gestión de caja a los
comensales (se realiza los pedido de las mesas correspondientes y
posteriormente son atendidos), la gestión de almacén: (ingreso y salida
de los productos para la elaboración de las comidas y otros enseres
16
como gaseosas, cervezas, etc.), mismo que permitirá gestionar los
pedidos de una manera rápida, segura y amigable con el cliente.
3.1.2. FORMULACIÓN DEL PROBLEMA
3.1.2.1. PROBLEMA PRINCIPAL
¿De que manera implementar un sistema informático de caja y
almacén para el RECREO FALCON?
3.1.2.2. PROBLEMAS ESPECÍFICOS
PE1. ¿Cómo implementar un Subsistema de gestión de caja en el
RECREO FALCON?
PE2. ¿Cómo implementar un Subsistema de gestión de almacén en el
RECREO FALCON?
3.1.3. OBJETIVOS
3.1.3.1. OBJETIVO GENERAL
Implementar un sistema informático de caja y almacén para la
gestión en el RECREO FALCON.
3.1.3.2. OBJETIVOS ESPECÍFICOS
OE1. Implementar un Subsistema de gestión de caja en el
RECREO FALCON.
OE2. Implementar un Subsistema de gestión de almacén en el
RECREO FALCON.
3.1.4. JUSTIFICACIÓN
El sistema a desarrollar no tiene una alta complejidad, el código debe
ser sencillo, tanto que pueda modificarse fácilmente, las iteraciones
deben ser presentadas en corto tiempo y requiere ser hecho en el
menor tiempo posible. Técnicamente, no se requiere abundante
documentación a lo largo del proceso de desarrollo.
17
3.1.5. HIPÓTESIS
No aplicable, por el tipo de investigación.
3.1.6. VARIABLES
3.1.6.1. VARIABLE INDEPENDIENTE
Sistema informático de caja y almacen.
3.1.6.2. VARIABLE DEPENDIENTE
Gestión del RECREO FALCON.
3.1.7. OPERACIONALIZACIÓN DE VARIABLES
Variables
Dimensiones
Indicadores
Programación funcional
Interfaz adecuada
Sistema
Funcionalidad
Tiempo de atención
informático de
caja y almacen
Tiempo de búsqueda
Seguridad
Registro
Gestión del
RECREO
Búsqueda
Control de accesos
Respaldo de datos(Backups)
Tiempo de respuesta de registros
Tiempo de respuesta de
búsquedas
FALCON
Alertas
Tiempo de Secion para usuarios
3.1.8. LIMITACIONES
No se observaron limitantes significativas para el desarrollo de la
investigación ya que se tomará en cuenta al personal que labora en el
RECREO FALCON por lo tanto se tiene todas las condiciones
necesarias para cumplir satisfactoriamente con los objetivos trazados.
18
3.1.9. VIABILIDAD
3.1.9.1. RECURSOS HUMANOS:
El presente trabajo de investigación es viable porque el personal
intervendrá directamente en el diseño e implementación del sistema
informático.
3.1.9.2. RECURSOS ECONÓMICOS:
Se dispondrá de recursos económicos para cubrir con los
objetivos trazados al realizar la implementación del sistema informático.
3.1.9.3. RECURSOS TECNOLÓGICOS (MATERIALES)
Se dispone de recursos materiales para para cumplir con los
objetivos trazados al realizar la implementación del sistema informático.
3.2.
MARCO TEORICO
3.2.1. ANTECEDENTES DE LA INVESTIGACIÓN
3.2.1.1.
INTERNACIONALES
a) ERNESTO ZEPEDA GÓMEZ (2013) EN LA INVESTIGACIÓN
“ANÁLISIS DE LA CALIDAD EN EL SERVICIO DE UN
RESTAURANTE FAMILIAR EN EL ESTADO DE CHIAPAS”ESCUELA
DE
NEGOCIOS
ADMINISTRACIÓN
DE
-
DEPARTAMENTO
HOTELES
Y
DE
RESTAURANTES
UNIVERSIDAD DE LAS AMÉRICAS PUEBLA - CHOLULA,
PUEBLA,
MÉXICO.
SE
LLEGÓ
A
LAS
SIGUIENTES
CONCLUSIONES:
Se identificó por medio de cuestionarios las deficiencias en
diversas áreas del restaurante, Los Faroles según la percepción
del cliente. El mayor número de deficiencias se encontró en el
servicio que se recibió. La gente expreso su opinión en cuanto a
que hace falta una mejor capacitación para los meseros que no
saben actuar de manera adecuada a las circunstancias que se
presentan.
19
La sazón de los alimentos también recibió críticas muy variadas,
mientras hay gente a la que le gusta mucho la comida del
restaurante hay otros que no quedan del todo satisfechos. El
motivo de que muchos regresen es porque les gusta el
establecimiento en general.
El diseño exterior recibió muy buenas críticas. A la gente le gusta
que cuente con estacionamiento amplio y tenga una buena
ubicación.
b) CARRILLO, SEBASTIAN ORTIZ (2012) EN LA INVESTIGACIÓN
“PROGRAMAS DE CALIDAD EN SERVICIO EN RESTAURANTES
DE LUJO Y PRIMERA CATEGORÍA DE LA CIUDAD DE
GUAYAQUIL”
ESCUELA
SUPERIOR
POLITÉCNICA
DEL
LITORAL FACULTAD DE INGENIERÍA MARÍTIMA Y CIENCIAS
DEL MAR – GUAYAQUIL, ECUADOR. SE LLEGÓ A LAS
SIGUIENTES CONCLUSIONES:
Se válida el método utilizado cuando el mejoramiento de la
calidad
percibida
a
través
de
las
medidas
correctivas
implementadas es afectado cuando una de las variables de
investigación se ve alterada por una circunstancia externa
incontrolable (falta de agua potable en el local) y resulta ser
valorada en grados significativamente negativa.
A pesar de que un programa de calidad de servicio es solamente
un
proceso
de
capacitación,
se
puede
concluir
que
la
implementación de un pequeño modelo de instrucción a meseros
afecta significativamente la percepción de calidad que tienen los
clientes.
El trabajo realizado en la implantación del programa de calidad
generó en el investigador un afecto especial por el restaurante al
trabajo en pos de mejorar, encontrando las debilidades del
servicio y generando medidas que nos acerquen más a la calidad
deseada
20
3.2.1.2.
NACIONALES
a) NICHOR
MIGUEL
TORRES
PILCO
(2011)
EN
LA
INVESTIGACIÓN: “IMPLEMENTACIÓN DE UN SISTEMA DE
INFORMACIÓN
PARA
EL
RESTAURANTE
CEVICHERÍA
PATY´S”. SE LLEGÓ A LAS SIGUIENTES CONCLUSIONES:
Para el desarrollo del sistema de información, se realizó el análisis
de las necesidades y procesos del área de ventas del
Restaurante, los cuales permitieron un conocimiento mejor de los
procesos para sistematizarlo y trabajar de manera eficiente y en
tiempo real.
Se logró realizar la implementación del sistema de información,
utilizando la metodología de desarrollo RUP en el Restaurante
Cevichería Mary’s de la Ciudad de Huaraz.
Se logró diseñar el sistema de información, utilizando el lenguaje
de programación Java y la Base de Datos SQL Server en el
Restaurante Cevichería Mary’s de la Ciudad de Huaraz, la cual
permitió garantizar la mejora del nivel y calidad del servicio de
atención a los clientes.
b) JOEL
ANDRÉS
SARAZA
GRANDE
(2014)
EN
LA
INVESTIGACIÓN:" IMPLEMENTACIÓN DE UN SISTEMA VÍA
WEB CON APLICACIÓN MÓVIL PARA LA RESERVA Y PEDIDOS
EN LÍNEA DE RESTAURANTES” , LLEGO A LA CONCLUSIÓN:
El sistema implementado cumple con la funcionalidad de todo el
proceso que se realizaba para registrar una reserva.
El sistema implementado ayuda al jefe de reserva para estar al
tanto de las reservas que están cerca para su atención.
Se logró dar facilidad al cliente, para que tenga una nueva vía
para realizar su reserva.
21
La integración de la implementación del sistema web y móvil
permite una nueva gama de posibilidades para ofrecer un mejor
servicio de calidad.
El sistema móvil facilita el marketing del restaurante a la hora de
ofrecer todos sus platillos el cual permite ganarse con el tiempo la
fidelización de los clientes.
3.2.2. BASES TEÓRICAS
3.2.2.1. Sistema de información
3.2.2.2. Concepto:
Según Bertalanffy, L. V. (1976).
El término sistema de información (SI) en la actualidad tiene dos
planteamientos: el primero y más común emparentado con artefactos
tecnológicos fundados para recibir, almacenar, procesar y ofrecer
información. El segundo concerniente con el manejo organizado de la
información en las organizaciones (ACM, AIS, IEEE-CS en Olave
2005).
Los sistemas de información se encargan también de convertir los
datos en información y se precisa como un "conjunto formal de
procesos operando sobre una colección de datos, distribuidos de
acuerdo con las necesidades de la organización, que recopilan,
elaboran y distribuyen la información necesaria para las acciones de
dicha organización y para las acciones de dirección y control
convenientes”.
No existe una sola definición consensada sobre sistema de
información:
Definición general de los sistemas de información. Según
(Laudon K, Laudon J): “conjunto de componentes interrelacionados que
recolectan (o recobran), procesan, acopian y distribuyen información
para apoyar a la toma de decisiones y el control de una organización”.
Definición basada en la tecnología de la información, “conjunto de
personas, procesos, datos y tecnología de la información que
22
interactúan para acopiar, procesar, acopiar y proveer la información
ineludible para el educado funcionamiento de la organización”.
Definición desde una figura estratégica. “conjunto sensato de
procesos que, aplicándose con un conjunto estructurado de datos
constituida de acuerdo con las necesidades de la empresa, recopila,
elabora y distribuye (parte de) la información necesaria para la
evolución de dicha empresa y para las diligencias de dirección de
control convenientes, afirmando al menos en parte, la toma de
decisiones netamente necesaria para alcanzar desempeñar las
funciones y procesos de negocio de la empresa de acuerdo a su
estrategia”.
Los
sistemas
de
información
“como
un
acumulado
de
componentes que interactúan entre ellas para alcanzar un objetivo
común: satisfacer todas las necesidades de información de una
organización”.
Fundamentándose en los conceptos exhibidos, para efectos de
este trabajo de investigación explotaremos la siguiente definición de
sistema de información: “un sistema de información es un conjunto de
personas, procesos, datos y tecnología de la información (hardware,
software, medios de almacenamiento y/o base de datos) que reciben
datos de entrada, producen procesamientos ya puntualizados y
conciben información de salida o cualquier otro resultado demandado,
la cual se presenta a través de distintos medios de difusión y que será
utilizada para las tomas de decisiones en la organización.”
Los sistemas de información están constituidos por subsistemas:
software, hardware, medios de almacenamiento y/o base de datos; y a
todo este acumulado de subsistemas se les designa aplicación de
sistemas de información; de tal forma que los sistemas de información
logran tener aplicaciones en ventas, contabilidad, inventarios, compras
y cualquier otro proceso en la organización.
La intención de los sistemas de información, cuyas prestancias
son: entrada, procesamiento y salida de datos. Además, consideran
23
que
la
retroalimentación
sirve
para
mejorar
o
controlar
el
funcionamiento del sistema en la organización.
Un principio primordial en el progreso de los sistemas de
información por las empresas, es que las aplicaciones son una
herramienta mas no un instrumento que debe de poseerse para
manejar la tecnología de la información; en secuela el sistema de
información debe de desarrollarse en base a su propia capacidad para
perfeccionar el desempeño de la organización, sin embargo, estas
razones no simbolizan exclusivamente pérdidas y ganancias. La
marcha de una empresa encierra también beneficios para todos sus
empleados, clientes y otras personas con la que se tienen
sociabilidades.
3.2.2.3. Clasificación de los sistemas de información
Existen diversos criterios para clasificar a los sistemas de
información:
Por el grado de su formalidad, que a la vez se fraccionan en
formales e informales.
Por
el
nivel
de
automatización
alcanzado,
poco
automatizados o muy automatizados
Por su relación con la toma de decisiones
Por la naturaleza de sus entradas y salidas
Por el origen y el grado de personalización
Por el valor que representan para la organización
Los Sistemas de Información tienen el objetivo de dar soporte a
las decisiones mediante información actualizada y concreta de la
organización.
Los Sistemas de Información que consiguen la automatización de
procesos operativos dentro de una organización, son los Sistemas
Transaccionales siendo el más generalizado universalmente. Son
aquellos que se facultan de manera concreta de procesar tanto las
transacciones de información inducidas por las interacciones formales
24
entre el entorno y la organización como las transacciones forjadas en el
seno de la información. Mientras que los sistemas de apoyo a las
decisiones facilitan el acceso y la preparación de datos relevantes,
ofrece capacidad de cálculo.
Los sistemas de información se clasifican en subsistemas
directivos y en subsistemas funcionales. Los subsistemas funcionales
se describen en función de las actividades que se ejecutan en las
distintas áreas funcionales de la empresa.
3.2.2.4. Metodologías de desarrollo
3.2.2.5. Definición
Las metodologías de desarrollo de software son un acumulado de
técnicas, procedimientos y ayudas a la documentación para la
generación de productos software.
Actualmente es ineludible considerar los peligros, aunque
regularmente las empresas, no han sido sensibilizadas de los riesgos
innatos al procesamiento de la información por intermedio de
ordenadores, a lo que han aportado, a veces, los propios responsables
de informática, que no han sabido exponer con la suficiente elocuencia
las secuelas de una política de seguridad insuficiente o incluso
inexistente. Por otro lado, debido a una cierta imperfección profesional
en la aplicación de los razonamientos de coste/beneficio, el directivo
inexperto de la informática no acostumbra a facultar inversiones que no
lleven
implícitamente
un
beneficio
justificable,
tangible
y
conmensurable.
Las técnicas prueban cómo debe ser efectuada una actividad
técnica decretada identificada en la metodología. Combina el empleo
de unos modelos o formas gráficas junto con el manejo de unos
procedimientos puntualizados. Se debe asumir en consideración que
una técnica establecida puede ser manejada en una o más actividades
de la metodología del desarrollo de software. Conjuntamente se debe
tener mucho cuidado cuando se pretende cambiar una técnica por otra.
Las principales metodologías agiles son las siguientes:
25
a. Scrum
b. Kanban
c. XP
d. ICONIX
3.2.2.6. Metodología ICONIX
Se eligió esta metodología porque se realizo un curso de
programación y me enseñaron a realizar dicha metodología asi que con
la finalidad de practicar lo aprendido se decidio el uso de esta
metodología.
Es una metodología de desarrollo de software, basada en la
complejidad de análisis de la metodología RUP y la practicidad para el
desarrollo de la metodología XP
Iconix se guía a través de casos de uso y sigue un ciclo de vida
interactivo e incremental.
Es una metodología pesada-ligera de Desarrollo del Software que
se halla entre RUP (Rational Unified Process) y XP (eXtreme
Programming), unifica un conjunto de métodos de orientación a objetos
con el objetivo de tener un control estricto sobre todo el ciclo de vida
del producto a realizar.
Es una herramienta que nos permitiera capturar el Qué hacer y
luego ayudarnos a decidir Cómo hacerlo.
Qué hacer : Análisis
Cómo hacerlo : Diseño
Fue elaborado por Doug Rosenberg y Kendall Scott a partir de
una síntesis del proceso unificado de los “tres amigos” Booch,
Rumbaugh y Jacobson y que ha dado soporte y conocimiento a la
metodología ICONIX desde 1993. Presenta claramente las actividades
de cada fase y exhibe una secuencia de pasos que deben ser
seguidos. (Castillo, Figueroa, & Sevilla)
26
3.2.2.7. Características
ICONIX cuenta con tres características fundamentales:
Iterativo e Incremental: durante el desarrollo del modelo del
dominio y la definición de los casos de uso se producen
varias iteraciones. El ciclo de vida incremental consiste en
desarrollar por partes el producto de manera que puedas
integrarlas funcionalmente. Ciclo de vida Iterativo, en cada
ciclo de iteración se revisa y mejora el producto.
El desarrollo se organiza en series de mini-proyectos
cortos, llamados iteraciones.
Trazabilidad: Cada paso que se realiza está definido por un
requisito, se define la trazabilidad como la capacidad de
seguir una relación entre los diferentes artefactos de
software producidos.
Dinámica del UML: Ofrece un uso dinámico del UML
porque utiliza algunos diagramas UML, sin exigir la
utilización de todos, como en el caso de RUP (Rational
Unified Process). (Castillo, Figueroa, & Sevilla).
3.2.2.8. Fases de la metodología ICONIX
Según ITSA. (2008)
Revisión de los requisitos/ Análisis de Requisitos
En esta fase se deben analizar todos los requisitos que formaran
parte del sistema y con estos construir el diagrama de clases, que
representa las agrupaciones funcionales que estructuraran el
sistema en desarrollo.
Para esta fase se utilizan 3 herramientas:
Modelo de Dominio: esto se refiere a identificar objetos y
cosas del mundo real que intervienen con nuestro sistema.
(Estático)
27
Modelo de Casos de Uso: describe las acciones o el
comportamiento que un usuario realiza dentro del sistema.
Comprende de actores, casos de uso y el sistema.
Prototipo de Interfaz de Usuario: implica la creación de un
modelo o modelos operativos del trabajo de un sistema, en
el que analistas y clientes deben estar de acuerdo.
(Dinámico/ los usuarios se hacen participantes activos en el
desarrollo)
Revisión del diseño preliminar /Análisis y Diseño Preliminar
En esta fase a partir de cada caso de uso se obtendrán una ficha
de caso de uso, está formada por un nombre, una descripción,
una precondición que debe cumplir antes de iniciarse, una poscondición que debe cumplir al terminar si termina correctamente.
Realizar Diagrama de Robustez: es un híbrido entre un
Diagrama de Clases y un Diagrama de Actividades. Es una
herramienta que nos permite capturar el Que hacer y a partir de
eso él Como hacerlo. Facilita el reconocimiento de objetos y hace
más sencilla la lectura del sistema.
El diagrama de Robustez se divide en:
Objetos
fronterizos:
usado
por
los
actores
para
comunicarse con el sistema.
Objetos entidad: son objetos del modelo del dominio.
Objetos de Control: es la unión entre la interfaz y los
objetos de entidad.
Diagrama de Clases: describe la estructura de un sistema
mostrando sus clases, atributos y las relaciones entre ellos.
Revisión crítica del diseño/Diseño
En esta fase se registran todos los elementos que forman parte de
nuestro sistema.
28
Diagramas de Secuencia: muestra los métodos que llevaran las
clases de nuestro sistema. Muestra todos los cursos alternos que
pueden tomar todos nuestros casos de uso. Se debe terminar el
modelo estático, añadiendo los detalles del diseño en el diagrama
de clases y verificar si el diseño satisface todos los requisitos
identificados.
Implementación
Después de tener el diseño se creará el software; que
posteriormente se entregará. Se debe utilizar el diagrama de
componentes si fuera necesario para apoyar el desarrollo, es
decir mostrar una distribución física de los elementos que
componen la estructura interna del sistema. Así como escribir y
generar el código.
3.2.2.9. Ventajas de la metodología ICONIX
Proceso ágil para obtener un sistema informático.
Dedicada a la construcción de sistemas de gestión de
pequeña y mediana complejidad con la participación de los
usuarios finales.
3.2.2.10. Desventajas de la metodología ICONIX
Necesita información rápida y puntual de los requisitos, del
diseño y de las estimaciones .
Es una metodología que no debe ser usada en proyectos de
larga duración.
3.2.2.11. Lenguaje de programación
Un lenguaje de programación es un acuerdo entre persona que
puede definirse así:
Conjunto de reglas o normas que admiten asociar a cada
programa educado un cálculo que estará llevado a cabo por un
ordenador (sin ambigüedades).
29
Por tanto, un lenguaje de programación es un convenio o
acuerdo acerca de cómo se debe interpretar el significado
de los programas de dicho lenguaje.
Muchas veces se confunden los lenguajes con los
compiladores, intérpretes o con los entornos de desarrollo
de software.
3.2.2.12. Base de datos
Una base de datos es un sistema informático a manera de
almacén. En este almacén se recogen grandes volúmenes de
información.
Por
ejemplo,
supongamos
que
somos
una
corporación telefónica y queremos tener almacenados los datos
personales y los números de teléfono de todos nuestros clientes,
que seguramente sean millones de individuos.
Dicha información es de gran volumen de tamaño: estamos
hablando de treinta o veinte datos multiplicados por miles si no es
que millones de individuos. La arcaica gestión de datos se
fundamentaba
en
archivos
informáticos,
pero
para
las
necesidades de hoy en día hacen mucha falta sistemas más
perfeccionados que son precisamente lo que se denomina
sistema de base de datos. Llegamos a la conclusión de que
precisaríamos una base de datos para automatizar el acceso a la
información y poder acceder a ella de manera fácil y rápida
además de poder realizar cambios de una manera más eficiente.
3.2.2.13. Diferencia entre sistema informático y sistema de
información
Según Davis, Gordon M y Olson, Margrethe H. (1994). Cuesta
entender al principio qué es un sistema informático y en qué se
diferencia de un sistema de información.
Un sistema de información es un concepto más amplio que puede
(o no) incluir dentro de un sistema informático.
Pensemos en un sistema de información de una biblioteca donde
no hay computadoras. La persona encargada tiene que buscar en
30
un gran archivador las distintas fichas de los libros cuando recibe
un pedido, buscar el libro, etc.
Hay todo un sistema de información (no informático) en este
sencillo
ejemplo.
El
sistema
de
información
incluye:
el
bibliotecario, el archivador con las fichas de los libros, los
procedimientos que debe realizar el bibliotecario, los libros, etc.
O sea, el sistema de información incluye las Personas, los Datos,
las Actividades y/o técnicas de trabajo y los recursos materiales
en general.
Ahora la biblioteca se informatiza (utiliza una computadora y una
aplicación relacionada a la biblioteca), ya no será necesario
buscar la ficha del libro físicamente en el archivador, sino que lo
podrá hacer a través de un programa en la computadora, podrá
también imprimir la información, saber la ubicación del libro, etc.
Ahora podemos hablar que la biblioteca tiene su sistema
informático, que forma parte de su sistema de información.
3.2.3. DEFINICIONES CONCEPTUALES
a)
Almacén: Conjunto de productos que tiene almacenados un
comercio y que están destinados a la venta o al consumo.
b)
Software: De acuerdo a, (Alcalde Garcia, 1994), el software es un
conjunto de elemento lógicos necesarios para que se pueda
realizar las tareas encomendadas al mismo, se puede definir de la
siguiente forma: en la parte lógica que dota al equipo físico de
capacidad para realizar cualquier tipo de trabajo.
c)
Hardware: La Real Academia Española define al hardware como
el conjunto
de
material (física)
los
componentes que
de
una
conforman
computadora,
a
la parte
diferencia
del software que refiere a los componentes lógicos (intangibles).
Sin embargo, el concepto suele ser entendido de manera más
amplia y se utiliza para denominar a todos los componentes
físicos de una tecnología.
31
d)
Codificación:
La codificación es la operación de escribir la
solución del problema (de acuerdo a la lógica del diagrama de
flujo o pseudocódigo), en una serie de instrucciones detalladas,
en un código reconocible por la computadora, la serie de
instrucciones detalladas se le conoce como código fuente, el cual
se escribe en un lenguaje de programación o lenguaje de alto
nivel. (Hernández, 2010).
3.3.
MATERIALES Y MÉTODOS
3.3.1. TIPO DE INVESTIGACIÓN
Según Sánchez Carlessi H. y Reyes Meza C. (2006), La
investigación Aplicada o Tecnológica, se utiliza la tecnología para luego
aplicarla a través de un sistema informático y así optimizar los procesos
dentro de una empresa o institución.
En ese sentido el presente trabajo de suficiencia profesional es de
Tipo Aplicada o Tecnológica.
32
CAPITULO IV
APORTES PARA LA SOLUCIÓN DEL PROBLEMA
4.1.
ANÁLISIS DEL SISTEMA PROPUESTO
En la actualidad el recreo Falcón realiza sus operaciones diarias con papeles
y no computarizado, donde suelen presentarse errores en el registro de
pedido que genera el mozo, en caja se confunde al cobrar por mal envió de
pedido del mozo y esto ocasiona atrasos en el cobro, perdida de dinero en
caja, y errores de pedido, lo que perjudica la atención al cliente.
Para el control de caja y egresos suelen usar un cuaderno donde
anotan los ingresos y egresos del día, pero demoran de 30 min a 1 hora en
cuadras caja dependiendo del número de pedidos generados y cobrados en
la empresa.
Sistema de
Funciones
Información
NINGUNO
NINGUNO
Tabla 1 CONTROL DE CAJA Y EGRESOS
DEFINICIÓN DEL SISTEMA “ CAJA”
OBJETIVO.
Permitir control en general todos los ingresos y gastos de las empresas, y
poder tener un stock real de la mercadería que gestionan actualmente.
ALCANCES DEL SISTEMA
DENTRO DE LOS PRINCIPALES ALCANCES DEL SISTEMA SE TIENEN LOS SIGUIENTES:
Reportes de ingresos del día, mes
Control de caja en ingresos y egreso (movimiento diario, mensual,
anual)
Registro de Facturas, ticket y boletas de venta
Registro de ingreso y salida de almacén
Cierre de caja por cajero
Gestión de clientes y personal.
33
BENEFICIOS DEL SISTEMA
Permitir visualizar e imprimir reportes
Facilidad en el registro de ingresos y gastos
Mejor control de caja, facturación, meseros.
Mejor control de inventario
REQUERIMIENTOS FUNCIONALES
Describe la funcionalidad o los servicios que se espera proveerán el sistema
Número
RF01
RF02
RF03
RF04
RF05
RF06
RF07
RF08
RF09
RF10
RF11
RF12
RF13
RF14
RF15
RF16
RF17
RF18
Requerimiento Funcional
Registro de clientes, meseros.
Registro de Ingresos con los
siguientes
comprobantes(boleta,
factura, recibo)
Registro de egresos del día
Reporte de egresos
El encargado de caja solo visualiza
sus ventas y cierre de caja.
Reporte de ingresos grafico por
periodo
Control de stock
Reporte
de
movimiento
diario,
mensual, anual en gastos e ingresos
Resumen de cierre de caja
Registro de usuario con perfiles de
acceso al sistema
Permitir el registro, actualización y
eliminación de platos y productos.
Configuración del sistema
Registro de mesas y categorías
Reporte de reposición de stock
Reporte en xls al adsoft
Actualizar egresos registrados
Permitir baja de documentos
Reporte de resumen diario de ventas
()
Tabla 2 FUNCIONALIDAD
34
REQUERIMIENTOS NO FUNCIONALES DEL PRODUCTO:
Especifican restricciones al comportamiento del producto.
El sistema es cliente – servidor, el aplicativo es en escritorio.
Como Gestor de Base de datos
Fiabilidad: El sistema deberá recuperarse ante perdidas de conexión
al servidor, por ello en caso ocurra algún error de conexión con éste,
el sistema indicará un mensaje de reanudar la conexión y volverá a
intentar conectarse automáticamente después de un periodo corto de
tiempo (5 minutos), hasta alcanzar la conexión.
Eficacia: El sistema permitirá el acceso de múltiples usuario
simultáneamente
Portabilidad: funciona en diversas plataformas
Facilidad de uso: El sistema debe ser fácil de usar y en caso del
sistema.
IDENTIFICACION Y DEFINICION DE LOS SUBSISTEMAS
SUB SISTEMAS.
Los subsistemas que integran el sistema de información de control de
facturación y caja contemplan el soporte a todos los beneficios indicados
anteriormente.
LOS SUBSISTEMAS SON:
Subsistema de Facturación
Subsistema de Caja
SUB SISTEMA FACTURACION
OBJETIVO.
Facilitar la emisión de comprobantes y controlar los ingresos
generados por estos
35
ALCANCES DEL SUB SISTEMA
Registro de factura, ticket y boleta
Resumen diario
Resumen de bajas
FUNCIONES PRINCIPALES.
El subsistema de facturación debe contemplar las siguientes
funcionalidades:
Registro de clientes
Selección de forma de pago (efectivo, tarjeta)
Emisión e impresión de ticket
Baja de comprobantes
Reporte de Ingresos y bajas
BENEFICIOS DEL SUB SISTEMA
Controlar el ingreso y baja generada por el cajero
SUB SISTEMA DE CONTROL EGRESOS Y CAJA
OBJETIVO
Permitir controlar el egreso y cierre de caja generado por el cajero
ALCANCES DEL SUB SISTEMA
Registro de cierre de caja
Resumen de caja
FUNCIONES PRINCIPALES.
El Subsistema de egresos y caja debe contemplar las siguientes
funcionalidades:
Registro de egresos
Registro de cierre de caja
Resumen de caja
Reporte de egresos
36
BENEFICIOS DEL SUB SISTEMA
Resumen de mes vs ingresos y egresos
Control Detallado de ingresos y gastos de caja
SUB SISTEMA DE USUARIO
OBJETIVO.
Permitir controlar el acceso al sistema por permisos y perfiles
ALCANCES DEL SUB SISTEMA
Controlar los accesos al sistema
FUNCIONES PRINCIPALES.
El Subsistema de usuarios debe contemplar las siguientes funcionalidades:
Realizar ingresos de usuarios
Registro de personal
Asignar permiso a un usuario determinado
BENEFICIOS DEL SUB SISTEMA
Control total de acceso al sistema
IDENTIFICACION DE ACTORES
DESCRIPCIÓN DEL TIPO DE ACTOR
ACTOR
TIPO
Mesero
Interno
Cajero
Principal
Gerente
Principal
Tabla 3 DESCRIPCIÓN DEL TIPO DE ACTOR
37
DEFINICION DE ACCESO AL SISTEMA
Actor
Descripción
Mesero
Acceso al sistema
Encargado de generar Pedido por número de
los pedidos
Cajero
mesa
Encargado
de Realiza la emisión del
registrar los egresos, comprobante, egresos
realizar los cobros, y y el cierre de caja
entregar
el
comprobante al cliente
Gerente
Visualiza
todos
los Todo el sistema
reportes del sistema
Tabla 4
4.2.
DEFINICION DE ACCESO AL SISTEMA
DISEÑO DE LA BASE DE DATOS
Según Bertalanffy, L. V. (1976). Para el sistema implementado se
ha diseñado una base de datos fundamentada en el modelo relacional, la
cual se describe a continuación:
Almacenar existencias de productos en el almacén.
Almacenar información detallada sobre los productos que se
venden en el restaurante.
Almacenar
usuarios
con
los
respectivos
permisos
de
administración sobre el sistema.
TABLAS
Categoría
En
esta
tabla
se
almacenan
todas
las
categorías
correspondientes a los tipos de productos que se venden.
Cod_categoria: Es el identificador único de la categoría.
Cate_descripcion: Es el tipo de producto al que pertenece la
categoría.
38
Factura
En
esta
tabla
es
posible
almacenar
la
información
correspondiente a la factura con la cual es posible relacionar los
pedidos en el módulo visualización.
Cod_factura: Es el identificador único de factura.
Fact_cajero: Hace referencia al identificador del usuario.
Fact_total: El total de la venta registrada en cada mesa o a cada
cliente.
Fact_fechaemision: fecha en la que es realizado y expedido el
pedido.
Producto.
En esta tabla se almacena la información correspondiente a la
descripción de los productos o comidas rápidas que se venden en el
restaurante.
Cod_producto: Es el número con el que se identifica el
producto.
Prod_descripcion: Es el nombre asignado al producto.
Prod_Precio: El precio asignado a cada producto.
Cod_categoria: Permite identificar qué tipo de producto es:
comida, bebida o adicional.
Almacén
La tabla de almacén guarda los insumos que se encuentran en
la bodega del restaurante, dichos insumos son los que se utilizan
para preparar las comidas.
Cod_almacen: Es el identificador de cada compra o
inventario que se realice.
Alma_descripcion: Nombre del producto.
Fecha de ingreso: Fecha de compra del insumo,
Mesa
Esta tabla hace referencia a los datos contenidos en la mesa en
la que es atendido un pedido.
39
Cod_mesa: Es el número de la mesa en la que se realiza el
pedido
Mesa_descricion: Es el nombre de la mesa, generalmente se
usa la nomenclatura mesa 1, mesa 2, mesa 3, mesa n, para
nombrarla.
Mesa_estado: Permite controlar las mesas que se encuentran
libres.
Usuario
El objetivo de esta tabla es el de almacenar la información
correspondiente a todos los usuarios que pueden utilizar el sistema,
dicha información hace referencia específicamente al id usuario,
contraseña, nombre, apellidos y tipo. Los campos mencionados
anteriormente se especifican como sigue:
Cod_usuario: Hace referencia al número con el que puede
ingresar el usuario al sistema.
Usua_clave: Es aquella con la que puede ingresar el usuario
al sistema luego de haber indicado su cod_usuario.
Usua_usuario: El nombre del usuario
40
MODELO ENTIDAD RELACIÓN
Gráfico 1 MODELO ENTIDAD RELACIÓN
41
MODELO RELACIONAL DE LA BASE DE DATOS
Gráfico 2 MODELO RELACIONAL DE LA BASE DE DATOS
42
4.3.
MODELO DE CASOS DE USO
DIAGRAMA DE CASOS DE USO POR MODULOS DEL SITEMA
Gráfico 3Subsistema de facturación
Gráfico 4 Subsistema de egresos y caja
d
43
Gráfico 5 Subsistema de Usuarios
Gráfico 6 Subsistema de Pedidos
44
ANÁLISIS Y DISEÑO PRELIMINAR
Gráfico 7 Descripción de casos de uso de autenticar al usuario
Tabla 5 Sección principal autenticar usuario
Autenticar usuario
Caso de uso
actores
Administrador, Cajero, Mesero
Propósito
Acceder al sistema y autenticarse como
usuario
Todos
Resumen
acceden
los
actores
al
sistema,
mencionados
indicando
su
nombre de usuario y contraseña.
Esencial.
Tipo
Tabla 6 Curso normal de los eventos autenticar usuarios
Accion de los actores
1. En este caso de uso
Respuesta al sistema
2. El sistema muestra la pantalla de
comiensa el cuando
inicio.
el usuario ingresa a
Usuario
la pagina inicial del
Contraseña
sistema
Y la opcion ingresar
3. El usuario ingresa los
4. El sistema verifica la existencia
del usuario y que la contraseña
datos
correspondientes
a
su
y
cuenta
sea correcta
45
selecciona la opcion
ingresar.
5. Si
los
datos
son
corectos,
muestra al usuario la pantalla que
corresponde a su tipo de cuenta.
6. El
usuario
puede
visualizar el entorno
de
trabajo
correspondiente a su
cuenta.
Tabla 7 Cursos alternos, autenticar usuarios
Acción
3.
Descripción
El usuario no ingresa ningún dato y selecciona
la opción ingresar, el sistema muestra la
pantalla de inicio con un mensaje señalado que
los campos son necesarios.
5.
Los datos ingresados son incorrectos, indica el
error por medio de un mensaje y reintenta la
acción 3.
46
Gráfico 8 Diagrama de caso de uso de administrador de usuarios
Tabla 8 Especificación de caso de uso de administración de
usuarios
Administrar usuario
Caso de uso
actores
Administrador
Propósito
Permitir al administrador crear nuevas cuentas
de usuario para sus empleados, o eliminar de ser
necesario.
Resumen
El administrador ingresa al sistema, crea las
cuentas de usuario necesario para asignar a sus
empleados.
Tipo
Esencial
Tabla 9 Curso normal de los eventos de administrador de usuarios
Respuesta al sistema
Accion de los actores
1. En
este
caso
comiensa
de
cuando
2. Abre una ventana con las
uso
siguientes opciones:
el
Administrador ingresa a su
Nuevo usuario
cuenta y selecciona la opción
Eliminar
mantenimeinto,
y
la
sub
Y la opcion ingresar
47
opción usuario o personal .
3. El administrador escoge la
accion que desea realizar
sobre las cuentas de usuario.
a. Si va a crear una cuenta,
vease la seccion: guardar
usuario.
b. Si
ba
a
eliminar
una
cuanta, vease la seccion:
eliminar usuario.
5. El sistema muestra
4. Utiliza el boton salir
para retornar
de nuevo la ventana
a la
principal
ventana principal.
del
administrador.
Tabla 10 Cursos alternos, Administrar usuario
Acción
3.
Descripción
El administrador decide no realizar ninguna acción
y presiona la opción salir.
48
Tabla 11 Seccion nuevo usuario (curso normal de los eventos)
Acción de los actores
1. El administrador
Respuesta del sistema
2. Abre
una
ventana
con
un
selecciona la opción
formulario que contiene los datos
nuevo usuario.
necesarios para registrar el nuevo
usuario
Personal
DNI
Clave
3. El usuario ingresa los
4. Envía los datos para ser
almacenado.
datos requeridos del
formulario y
selecciona el tipo de
usuario que desea
crear. Seguido a esta
selecciona “guardar”
6. Muestra al usuario la opción
5.
salir
para
ir
al
menú
principal.
7. El usuario selecciona
8. El
sistema
muestra
la
ventana del menú principal.
la opción salir.
Tabla 12 Cursos alternos, seccion nuevo usuario
Acción
3.
Descripción
El administrador no ingresa los datos completos, el
sistema muestra información pidiendo ingresar todo los
datos, regresa al paso 2.
3.
El administrador no desea agregar un nuevo usuario, y
selecciona la opción salir para regresar al menú
principal.
49
Tabla 13 Seccion eliminar usuario
Acción
de
Respuesta del sistema
los
actores
1. El administrador
2. Muestra el menú desplegable.
selecciona la opción
eliminar usuario.
3. El administrador
4. Muestra un listado con todas las
selecciona el menú
cuentas existentes a excepción de la
desplegable.
cuenta del administrador.
5. Escoge una cuenta
de la listas.
6. Selecciona la
7. El
sistema
elimina
la
cuenta
seleccionada.
opción:
Eliminar.
Salir( vaya al
paso 9)
8. El sistema muestra al usuario un mensaje en
donde indica que la actividad ha sido
realizada con éxito
9. Muestra al usuario la opción de Salir para ir
al menú principal.
10.
El usuario
11. El sistema muestra la ventana principal.
selecciona la opción
salir.
Tabla 14 Cursos alternos, seccion eleiminar usuario
Acción
3.
Descripción
El administrador no escoge ninguna cuanta de la lista, el
sistema muestra información solicitando seleccionar el
campo usuario, regresa al paso 2.
3.
El administrador no desea agregar un nuevo usuario, y
selecciona la opción salir para regresar al menú principal.
50
Gráfico 9 Diagrama de caso de uso de administrar mesas
Tabla 15 Especificación de caso de uso de administrar mesas
Caso de uso
Administrar mesas
actores
Administrador, Mesero
Propósito
Permitir al usuario crear nuevas mesas en el sistema
y eliminarlo cuando se requiera.
Resumen
El usuario ingresa al sistema, seguido selecciona la
opción configuración, luego la sub opción mesas y
realiza la operación deseada.
Tipo
Esencial
51
Tabla 16 Curso normal de eventos de caso de uso de administrar
mesas
Respuesta del sistema
Acción de los actores
2. Abre una venta con las
1. Este caso de uso comienza
cuando el usuario ingresa a su
siguientes opciones:
cuenta y selecciona la opción
Registrar.
configuración, y la sub opción
Guardar.
mesas.
Eliminar.
3. El usuario escoge la acción que
desea realizar sobre la
administración de mesas.
a. Si va a crear una mesa, véase
la opción registrar mesa.
b. Si va a eliminar una mesa
véase la opción: eliminar
mesa.
4. Utiliza el botón Salir para retornar
5. Regresa a la ventana
principal del sistema.
a la ventana principal.
Tabla 17 Cursos alternativos
Acción
3.
Descripción
El usuario no realiza ninguna acción y presiona la
opción salir.
52
Tabla 18 Sección administrar nuevas mesas
Respuesta del sistema
Acción de los actores
2. Muestra una ventana con
1. El usuario
selecciona la
siguientes opciones:
opción Registrar
las
Nombre de la mesa y el
botón
nueva mesa.
Guardar.
3. Registra la
información
correspondiente al
nombre de la mesa
5. El sistema muestra al usuario
4. Selecciona el botón
un mensaje en donde indica
guardar.
que la actividad
ha sido
realizado con éxito.
6. Muestra al usuario la opción de
salir para ir al menú principal.
8. El sistema muestra la ventana
7. El usuario
del menú principal
selecciona la opción
salir.
Tabla 19 Cursos alternos
Acción
1.
Descripción
El usuario no realiza ninguna acción y presiona la
opción salir.
53
ráfico 10 Caso de uso consultar ventas
Tabla 20 Especificación de caso de uso consultar ventas
Caso de uso
Consultar ventas
actores
Administrador
Propósito
Permitir al usuario consultar las ventas
realizadas en un rango de tiempo requerido.
El usuario ingresa al sistema, seguido
Resumen
selecciona la opción ventas, luego la sub
opción ventas e ingresa la fecha en la que
desea visualizar.
Esencial
Tipo
Tabla 21 Curso normal de eventos de caso de uso (CU) de consulta
de ventas
Acción
de
Respuesta del sistema
los
actores
1. Este caso de uso
2. Abre una venta con las siguientes
opciones:
comienza cuando el
administrador ingresa
Consulta (fecha de inicio).
a su cuenta y
Enter
selecciona la opción
54
ventas
3. El usuario ingresa la
fecha que desea
consultar con el
siguiente formato: díames-año.
4. El usuario selecciona la
5. El sistema realiza una búsqueda de
acuerdo a la fecha ingresada por el
opción Ventas
usuario.
6. Muestra al usuario la opción de
salir para ir al menú principal
7. El usuario selecciona el
8. El sistema muestra la ventana del
menú principal.
botón Salir
Tabla 22 Cursos alternativos
Acción
3.
Descripción
El usuario no realiza ninguna acción y presiona la
opción salir.
Gráfico 11 Caso de uso de administrar inventario
55
Tabla 23 Especificación de caso de uso administrar inventario
Caso de uso
Administrar inventario
actores
Administrador
Propósito
Permitir al administrador ingresar datos al
inventario, consultar estado actual y agregar
categorías
para
el
fácil
manejo
de
los
productos.
Resumen
El administrador ingresa al sistema, accede al
módulo
producto
y
realiza
las
opciones
deseadas.
Tipo
Esencial
Tabla 24 Curso normal de eventos de caso de uso (CU) administrar
inventario.
Respuesta del sistema
Acción de los actores
1. Este caso de uso comienza
cuando el administrador
ingresa a su cuenta y
selecciona la opción
2. Abre una venta con las
siguientes opciones:
Ingresar inventario.
Consultar inventario
Y la opción salir.
productos
3. El administrador escoge la
4. Cierra la ventana de
sección que desea realizar
productos y retorna a
sobre el inventario.
la ventana principal.
a. Si va a ingresar nuevos
insumos véase a la
sección: producto.
b. Si va a modificar consultar
disponibilidad o
movimientos de insumos
véase a la opción de
producto.
c. Si va a ingresar nueva
categoría de insumos
56
véase a la sección
ingresar categoría.
Tabla 25 Cursos alternativos de administrar inventario
Descripción
Acción
El administrador decide no realizar ninguna
3.
acción y presiona la opción salir., realiza la
opción 4
Tabla 26 Curso norma de los eventos sección ingresar inventario.
Acción
de
los
Respuesta del sistema
actores
1. El usuario
selecciona la
2. El sistema muestra un formulario
con las siguientes opciones:
opción ingreso
Comprobante de ingreso.
al almacén
Proveedor
Producto
Fecha
Motivo
cantidad.
Y
las
opciones
agregar, guardar y salir
3. El usuario
selecciona la
4. Envía
los
datos
para
ser
almacenados.
categoría del
insumo e
ingresa datos
requeridos y
selecciona la
opción agregar,
guardar.
5. El sistema muestra al usuario
que la actividad ha sido realizado
57
con éxito
6. Muestra al usuario la opción de
salir para ir al menú principal.
8. El sistema muestra la ventana
7. El usuario
selecciona la
del menú principal.
opción salir.
Tabla 27 Cursos alternativos sección ingresar inventario
Descripción
Acción
3.
El administrador no ingresa los datos completos y
presiona la opción salir, realiza la opción 2
3.
El administrador no desea agregar un nuevo insumo y
selecciona la opción salir para regresar al menú
principal.
Tabla 28 Curso norma de los eventos sección ingresar categoría.
Acción de los actores
1. El administrador
Respuesta del sistema
2. Muestra un listado con todas las
selecciona la opción
categorías existentes, un campo
ingresar categoría
nuevo categoría y las opciones
agregar y salir.
3. El usuario ingresa el
4. El sistema almacena el dato y lo
nombre de la nueva
agrega a la lista de categorías
categoría que desea
existentes.
crear. Seguido
selecciona la opción
agregar
5. El sistema muestra al usuario que
la actividad ha sido realizado con
éxito
6. Muestra al usuario la opción de
58
salir para ir al menú principal.
7. El usuario selecciona la8.
opción salir.
El sistema muestra la ventana del
menú principal.
Tabla 29 Cursos alternativos sección ingresar categoría
Acción
Descripción
3. El administrador no ingresa ningún dato en el campo
nuevo categoría y selecciona la opción agregar, el
sistema muestra un mensaje que el campo es
requerido. Regresa al paso 2.
3. El administrador no desea agregar una nueva categoría
y selecciona la opción salir
para regresar al menú
principal.
Gráfico 12 Caso de uso administrar productos
59
Tabla 30 Sección principal administrar productos
Caso
Administrar productos
de
uso
actores
Administrador
Propósito
Permitir al administrador tener el control sobre los
productos, facilitando la labor de agregar, modificar y
eliminar cada uno de estos.
Resumen
El administrador ingresa al sistema, accede al
módulo producto y realiza las opciones deseadas.
Esencial
Tipo
Curso normal de eventos de caso de uso (CU) administrar productos.
Acción de los actores
1. Este caso de uso
comienza cuando el
Respuesta del sistema
2. Abre
una
ventana
con
las
siguientes opciones:
administrador ingresa
Ingresar producto.
a su cuenta y
Modificar producto
selecciona la opción
Eliminar producto y la opción
productos
3. El administrador
escoge la sección que
salir.
4. Cierra la ventana de productos y
retorna a la ventana principal.
desea realizar.
a. Si va a ingresar un
producto véase la
sección: producto.
b. Si va a modificar
véase a la opción
de modificar
producto.
c. Si va a eliminar un
producto véase a la
sección eliminar
producto.
60
Cursos alternativos de administrar producto
Descripción
Acción
3.
El administrador decide no realizar ninguna acción y
presiona la opción salir, realiza la opción 4
Curso normal de los eventos sección ingresar producto
Acción
de
los
Respuesta del sistema
actores
1. El usuario
selecciona la
2. El sistema muestra un formulario
con los campos:
opción registrar
Nombre
producto
Precio y las siguientes opciones
agregar y salir.
3. El usuario ingresa
los datos del
4. Envía
los
datos
para
ser
almacenados.
producto nombre,
precio y
selecciona la
clase del producto
la cual puede ser:
comida, bebida o
adicional seguida
a esto selecciona
la opción salir.
5. El sistema muestra al usuario un
mensaje en donde indica que la
actividad ha sido realizado con éxito.
6. Muestra al usuario la opción salir
para ir al menú principal.
7. El usuario
8. El sistema muestra la ventana del
menú principal.
61
selecciona la
opción salir.
Cursos alternativos sección ingresar producto
Acción
3.
Descripción
El administrador no ingresa los datos completos, el
sistema muestra información pidiendo ingresar todos los
datos regresa al paso 2.
3.
El administrador no desea agregar un nuevo producto y
selecciona la opción salir para regresar al menú principal.
Curso normal de los eventos sección eliminar producto
Acción
de los
Respuesta del sistema
actores
1. El
2. Muestra una ventana con menú
administrador
desplegable y las opciones
selecciona la
Eliminar producto y el botón salir.
opción eliminar
producto
3. El usuario
4. El sistema despliega una lista de
selecciona el
todos
los
productos
menú
encuentra almacenados.
que
se
desplegable.
5. El usuario elige
6. El sistema elimina el producto y
de la lista el
muestra un mensaje en donde
producto que
indica que la actividad ha sido
desea eliminar.
realizado con éxito.
Seguido la
opción eliminar.
7. Muestra al usuario la opción salir
62
para ir al menú principal.
9. El sistema muestra la ventana del
8. El usuario
selecciona la
menú principal.
opción salir.
Cursos alternativos sección eliminar productos
Descripción
Acción
3.
El
administrador
no
elige
ningún
producto
selecciona la opción eliminar producto, el sistema
muestra un mensaje que el campo es requerido,
regresa al paso 2.
3.
El administrador no desea eliminar ninguno de los
productos listados y selecciona la opción salir para
regresar al menú principal.
4.4.
DIAGRAMA DE ROBUSTEZ POR MÓDULOS
SUBSISTEMA DE FACTURACION
63
SUBSISTEMA DE EGRESOS Y CAJA
SUBSISTEMA DE USUARIO
64
SUBSISTEMA DE PEDIDO
4.5.
DIAGRAMA DE SECUENCIA POR MÓDULOS
SUBSISTEMA DE FACTURACION
65
SUBSISTEMA DE EGRESOS Y CAJA
SUBSISTEMA DE PEDIDO
66
SUBSISTEMA DE USUARIO
67
4.6.
CODIFICACIÓN
IMPLEMENTACIÓN / GENERAR CÓDIGO
El siguiente código se crea las tablas necesarias para el
funcionamiento de la base de datos
Facturación
DROP TABLE IF EXISTS `facturacion`;
CREATE TABLE `facturacion` (
`cod_facturacion` int(11) NOT NULL AUTO_INCREMENT,
`fact_fechaemision` datetime DEFAULT NULL,
`fact_pago` enum('Contado','Credito') DEFAULT 'Credito',
`fact_comprel` varchar(150) DEFAULT NULL,
`fact_monto` float DEFAULT NULL COMMENT 'venta->monto de venta',
`fact_descuento` float DEFAULT NULL,
`fact_subtotal` float DEFAULT NULL,
`fact_igv` float DEFAULT NULL,
`fact_total` float DEFAULT NULL,
`fact_vuelto` float DEFAULT NULL,
`fact_efectivo` float DEFAULT NULL,
`fact_serie` varchar(25) DEFAULT NULL COMMENT 'venta: serie -numero, compra: serie',
`fact_numero` varchar(12) DEFAULT NULL,
`fact_estado` enum('SI','NO') DEFAULT NULL COMMENT 'si: anulado, no: no anulado',
`cod_usuario` int(11) NOT NULL,
`cod_cliente` int(11) DEFAULT NULL,
`cod_comprobante` int(11) DEFAULT NULL,
`cod_almacen` int(11) NOT NULL,
`cod_impuestos` int(11) DEFAULT NULL,
`fact_tarjeta` varchar(150) DEFAULT NULL,
`fact_numoperacion` varchar(10) DEFAULT NULL,
`fact_afectastock` enum('SI','NO') NOT NULL,
`fact_observacion` varchar(500) DEFAULT NULL,
`fact_alias` varchar(150) DEFAULT NULL,
`fact_fechaanulacion` datetime DEFAULT NULL,
`fact_cajero` varchar(200) DEFAULT NULL,
`fact_motivo`
enum('ANULACION','DESCUENTO','BONIFICACION','DEVOLUCION','COTIZACION','VENTA')
DEFAULT NULL,
`cod_motivooperacion` int(11) DEFAULT NULL,
`fact_comisiontarjeta` double DEFAULT NULL,
`fact_tipotarjeta` enum('DEBITO','NINGUNO','CREDITO') DEFAULT NULL,
`cod_origen` int(4) DEFAULT NULL,
`cod_mesa` int(11) DEFAULT NULL,
PRIMARY KEY (`cod_facturacion`),
KEY `fk_facturacion_comprobante1` (`cod_comprobante`),
KEY `fk_facturacion_producto_almacen1` (`cod_almacen`),
KEY `fk_facturacion_usuario1` (`cod_usuario`),
KEY `fk_facturacion_cliente1` (`cod_cliente`),
KEY `fk_facturacion_impuestos1` (`cod_impuestos`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
Mesa
DROP TABLE IF EXISTS `mesa`;
CREATE TABLE `mesa` (
`cod_mesa` int(11) NOT NULL AUTO_INCREMENT,
`mesa_descripcion` varchar(100) DEFAULT NULL,
`mesa_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_mesa`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
1.3.
Producto
68
DROP TABLE IF EXISTS `producto`;
CREATE TABLE `producto` (
`cod_producto` int(11) NOT NULL AUTO_INCREMENT,
`prod_serinumber` varchar(20) DEFAULT NULL COMMENT 'PARA CODIGO DE BARRAS',
`prod_descripcion` varchar(120) DEFAULT NULL,
`prod_nombrecorto` varchar(150) DEFAULT '',
`prod_observacion` text,
`prod_stockmin` int(11) DEFAULT NULL COMMENT 'referencial:para advertir que se está
quedando con menos stockque requiere actualmente',
`prod_costo` double NOT NULL,
`prod_precio` double NOT NULL,
`prod_preciocontado` double DEFAULT NULL,
`prod_descuento` float DEFAULT NULL,
`prod_porganancia` float DEFAULT NULL COMMENT 'porcentaje de ganancia',
`prod_tipocambio` float DEFAULT NULL,
`prod_imagen` varchar(400) DEFAULT NULL,
`prod_fecharegistro` datetime NOT NULL,
`cod_categoria` int(11) NOT NULL,
`prod_oferta` enum('SI','NO') NOT NULL,
`prod_xoferta` double DEFAULT NULL,
`prod_preciooferta` double DEFAULT NULL,
`prod_cantpromocion` int(11) DEFAULT NULL,
`prod_activo` enum('SI','NO') DEFAULT NULL,
`cod_cocina` int(11) DEFAULT NULL,
`prod_tipo` enum('PLATO','PRODUCTO') DEFAULT NULL,
PRIMARY KEY (`cod_producto`),
UNIQUE KEY `prod_descripcion` (`prod_descripcion`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
1.4.
Almacen
DROP TABLE IF EXISTS `almacen`;
CREATE TABLE `almacen` (
`cod_almacen` int(11) NOT NULL AUTO_INCREMENT,
`alma_descripcion` varchar(50) DEFAULT NULL,
`alma_abreviatura` varchar(10) DEFAULT NULL,
`alma_direccion` varchar(50) DEFAULT NULL,
`alma_eliminado` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_almacen`),
UNIQUE KEY `almacen` (`alma_descripcion`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
1.5.
Cocina
DROP TABLE IF EXISTS `cocina`;
CREATE TABLE `cocina` (
`cod_cocina` int(11) NOT NULL AUTO_INCREMENT,
`coci_descripcion` varchar(250) DEFAULT NULL,
`coci_abreviatura` varchar(50) DEFAULT NULL,
`coci_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_cocina`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
1.6.
Comprobante
DROP TABLE IF EXISTS `comprobante`;
CREATE TABLE `comprobante` (
`cod_comprobante` int(11) NOT NULL AUTO_INCREMENT,
`comp_descripcion` varchar(45) DEFAULT NULL COMMENT 'Actualizacion\nCuando se ingresa
la mercaderia por primera vez, para el aumento de stock ',
`comp_observacion` varchar(45) DEFAULT NULL,
`comp_activo` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_comprobante`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
CODIGO DEL SOFTWARE DE RESTAURANTE FALCÓN
-- ----------------------------- Table structure for acceso
69
-- ---------------------------DROP TABLE IF EXISTS `acceso`;
CREATE TABLE `acceso` (
`cod_acceso` int(11) NOT NULL AUTO_INCREMENT,
`acce_acceso` varchar(250) DEFAULT NULL,
`acce_visible` enum('TRUE','FALSE') DEFAULT 'TRUE',
`cod_perfil` int(11) DEFAULT NULL,
`cod_formulario` int(11) DEFAULT NULL,
`acce_eliminado` enum('SI','NO') DEFAULT 'NO',
PRIMARY KEY (`cod_acceso`)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for almacen
-- ---------------------------DROP TABLE IF EXISTS `almacen`;
CREATE TABLE `almacen` (
`cod_almacen` int(11) NOT NULL AUTO_INCREMENT,
`alma_descripcion` varchar(50) DEFAULT NULL,
`alma_abreviatura` varchar(10) DEFAULT NULL,
`alma_direccion` varchar(50) DEFAULT NULL,
`alma_eliminado` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_almacen`),
UNIQUE KEY `almacen` (`alma_descripcion`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for caja
-- ---------------------------DROP TABLE IF EXISTS `caja`;
CREATE TABLE `caja` (
`cod_caja` int(11) NOT NULL AUTO_INCREMENT,
`caja_fecha` datetime DEFAULT NULL,
`caja_operacion` enum('INGRESO','EGRESO') DEFAULT NULL,
`cod_tipomovimiento` int(11) DEFAULT NULL,
`caja_monto` double(11,4) DEFAULT NULL,
`cod_comprobante` int(11) DEFAULT NULL,
`caja_serienumero` varchar(20) DEFAULT NULL,
`caja_fecharegistro` datetime DEFAULT NULL,
`caja_detalle` varchar(250) DEFAULT NULL,
`caja_observacion` varchar(250) DEFAULT NULL,
`caja_persona` varchar(250) DEFAULT NULL,
`cod_facturacion` int(255) DEFAULT NULL,
`cod_egreso` int(11) DEFAULT NULL,
`cod_cliente` int(255) DEFAULT NULL,
`cod_proveedor` int(11) DEFAULT NULL,
`cod_usuario` int(11) DEFAULT NULL,
`caja_afecta` enum('SI','NO') DEFAULT NULL,
`caja_proviene` enum('VENTA','EGRESO','CIERRE','ANULACION') DEFAULT NULL,
PRIMARY KEY (`cod_caja`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for categoria
-- ---------------------------DROP TABLE IF EXISTS `categoria`;
CREATE TABLE `categoria` (
`cod_categoria` int(11) NOT NULL AUTO_INCREMENT,
`cate_descripcion` varchar(250) DEFAULT NULL,
`cate_abreviatura` varchar(250) DEFAULT NULL,
`cate_activo` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_categoria`),
UNIQUE KEY `categoria` (`cate_descripcion`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for cierrecaja
-- ---------------------------DROP TABLE IF EXISTS `cierrecaja`;
CREATE TABLE `cierrecaja` (
`cod_cierrecaja` int(11) NOT NULL AUTO_INCREMENT,
`cica_fecha` datetime DEFAULT NULL,
`cica_monto` double(11,4) DEFAULT NULL,
`cica_cajachica` double(11,4) DEFAULT NULL,
`cica_observacion` varchar(250) DEFAULT NULL,
`cod_usuario` int(11) DEFAULT NULL,
`cica_encargado` varchar(150) DEFAULT NULL,
`cica_montoanterior` double(11,4) DEFAULT NULL,
`cica_tarjeta` double(11,4) DEFAULT NULL,
`cica_total` double(11,4) DEFAULT NULL,
PRIMARY KEY (`cod_cierrecaja`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
-- ----------------------------
70
-- Table structure for cliente
-- ---------------------------DROP TABLE IF EXISTS `cliente`;
CREATE TABLE `cliente` (
`cod_cliente` int(11) NOT NULL AUTO_INCREMENT,
`clie_nombre` varchar(150) DEFAULT NULL COMMENT 'igual a razon social',
`clie_direccion` varchar(150) DEFAULT NULL,
`clie_ruc` varchar(12) DEFAULT NULL COMMENT 'dni\nruc',
`cod_clientetipo` int(11) NOT NULL COMMENT 'cliente: cliente sin empresanegocio: empresa de negocio',
`clie_distrito` varchar(200) DEFAULT NULL,
`clie_provincia` varchar(200) DEFAULT NULL,
`clie_departamento` varchar(200) DEFAULT NULL,
`clie_nacimiento` date DEFAULT NULL,
`clie_lineacredito` double DEFAULT NULL,
`clie_disponible` double DEFAULT NULL,
`clie_otorgado` double DEFAULT NULL,
`clie_movistar` varchar(100) DEFAULT NULL,
`clie_whatsapp` varchar(30) DEFAULT NULL,
`clie_fijo` varchar(15) DEFAULT NULL,
`clie_email` varchar(100) DEFAULT NULL,
`clie_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_cliente`),
UNIQUE KEY `cliente` (`clie_ruc`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for clientetipo
-- ---------------------------DROP TABLE IF EXISTS `clientetipo`;
CREATE TABLE `clientetipo` (
`cod_clientetipo` int(11) NOT NULL AUTO_INCREMENT,
`clti_nombre` varchar(45) NOT NULL,
`clti_descripcion` varchar(100) DEFAULT NULL,
`clti_activo` enum('NO','SI') NOT NULL DEFAULT 'NO',
PRIMARY KEY (`cod_clientetipo`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for cocina
-- ---------------------------DROP TABLE IF EXISTS `cocina`;
CREATE TABLE `cocina` (
`cod_cocina` int(11) NOT NULL AUTO_INCREMENT,
`coci_descripcion` varchar(250) DEFAULT NULL,
`coci_abreviatura` varchar(50) DEFAULT NULL,
`coci_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_cocina`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for comisiontarjeta
-- ---------------------------DROP TABLE IF EXISTS `comisiontarjeta`;
CREATE TABLE `comisiontarjeta` (
`cod_tarjetacomision` int(11) NOT NULL AUTO_INCREMENT,
`taco_tipo` enum('DEBITO','CREDITO') DEFAULT NULL,
`taco_porcentaje` double DEFAULT NULL,
`cod_tarjeta` int(11) DEFAULT NULL,
`taco_activo` enum('SI','NO') DEFAULT 'NO',
PRIMARY KEY (`cod_tarjetacomision`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for compra
-- ---------------------------DROP TABLE IF EXISTS `compra`;
CREATE TABLE `compra` (
`cod_compra` int(11) NOT NULL AUTO_INCREMENT,
`comp_fechaemision` datetime DEFAULT NULL,
`comp_pago` enum('Credito','Letras','Contado') NOT NULL,
`comp_comprel` varchar(150) DEFAULT NULL,
`comp_oc` varchar(15) DEFAULT NULL,
`comp_monto` float DEFAULT NULL COMMENT 'venta->monto de venta',
`comp_descuento` float DEFAULT NULL,
`comp_subtotal` float DEFAULT NULL,
`comp_igv` float DEFAULT NULL,
`comp_total` float DEFAULT NULL,
`comp_operacion` varchar(100) DEFAULT NULL,
`comp_serie` varchar(25) DEFAULT NULL COMMENT 'venta: serie -numero, compra: serie',
`comp_numero` varchar(12) DEFAULT NULL,
`comp_anulado` enum('SI','NO') DEFAULT NULL COMMENT 'si: anulado, no: no anulado',
`cod_transporte` int(11) NOT NULL,
`cod_usuario` int(11) NOT NULL,
`cod_comprobante` int(11) DEFAULT NULL,
`cod_almacen` int(11) NOT NULL,
`comp_recepcionado` enum('SI','NO') DEFAULT NULL COMMENT 'si:recepcionado, no: no recepcionado',
71
`cod_proveedor` int(11) NOT NULL,
`cod_impuestos` int(11) NOT NULL,
`comp_afectastock` enum('SI','NO') NOT NULL,
`cod_moneda` int(11) DEFAULT '1',
`comp_tipocambio` double DEFAULT '1',
`comp_observacion` varchar(500) DEFAULT NULL,
`comp_imagen` varchar(100) DEFAULT NULL,
`comp_motivo` enum('COMPRA','ANULACION','DESCUENTO','BONIFICACION','DEVOLUCION','OTROS','INGRESO','AJUSTE
DE STOCK','DEVOLUCION') DEFAULT NULL,
`cod_motivooperacion` int(11) DEFAULT NULL,
`comp_percepcion` float DEFAULT NULL COMMENT 'impuesto adelanto no influye en el costo',
`comp_totalcompra` float DEFAULT NULL,
PRIMARY KEY (`cod_compra`),
KEY `fk_facturacion_comprobante1` (`cod_comprobante`),
KEY `fk_compra_transportista1` (`cod_transporte`),
KEY `fk_compra_impuestos1` (`cod_impuestos`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for comprobante
-- ---------------------------DROP TABLE IF EXISTS `comprobante`;
CREATE TABLE `comprobante` (
`cod_comprobante` int(11) NOT NULL AUTO_INCREMENT,
`comp_descripcion` varchar(45) DEFAULT NULL COMMENT 'Actualizacion\nCuando se ingresa la mercaderia por primera vez,
para el aumento de stock ',
`comp_observacion` varchar(45) DEFAULT NULL,
`comp_activo` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_comprobante`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for conexionlocal
-- ---------------------------DROP TABLE IF EXISTS `conexionlocal`;
CREATE TABLE `conexionlocal` (
`cod_localip` int(11) NOT NULL AUTO_INCREMENT,
`colo_ipremota` varchar(29) DEFAULT NULL,
`colo_usuariobd` varchar(20) DEFAULT NULL,
`colo_clavebd` varchar(20) DEFAULT NULL,
`colo_basedata` varchar(100) DEFAULT NULL,
`colo_posicion` enum('ALMACEN','EMPRESA') DEFAULT NULL,
`colo_almacen` varchar(50) DEFAULT NULL,
`colo_direccion` varchar(100) DEFAULT NULL,
PRIMARY KEY (`cod_localip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for configuracion
-- ---------------------------DROP TABLE IF EXISTS `configuracion`;
CREATE TABLE `configuracion` (
`cod_configuracion` int(11) NOT NULL AUTO_INCREMENT,
`conf_tcventa` double DEFAULT NULL,
`conf_tccompra` double DEFAULT NULL,
`conf_igv` double DEFAULT NULL,
`conf_rutaimagen` varchar(40) DEFAULT NULL,
`conf_logo` varchar(20) DEFAULT NULL,
`conf_encabezado` varchar(100) DEFAULT NULL,
`conf_piepagina` varchar(100) DEFAULT NULL,
`conf_apertura` double DEFAULT NULL,
`conf_impuesto` double DEFAULT NULL,
`conf_impresoraseleccionada` varchar(100) DEFAULT NULL,
`conf_nombreempresa` varchar(300) DEFAULT NULL,
`conf_ruc` varchar(15) DEFAULT NULL,
`conf_direccionempresa` varchar(300) DEFAULT NULL,
`conf_nombrecomercial` varchar(300) DEFAULT NULL,
`conf_ubigeo` varchar(255) DEFAULT NULL,
`conf_percepcion` varchar(10) DEFAULT NULL,
`conf_direccionempresaprincipal` varchar(250) DEFAULT NULL,
`conf_facebook` varchar(150) DEFAULT NULL,
PRIMARY KEY (`cod_configuracion`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for configuracionimpresora
-- ---------------------------DROP TABLE IF EXISTS `configuracionimpresora`;
CREATE TABLE `configuracionimpresora` (
`cod_confimpresora` int(11) NOT NULL AUTO_INCREMENT,
`coim_serie` varchar(25) DEFAULT NULL COMMENT 'serie impresora',
`coim_modelo` varchar(10) DEFAULT NULL,
`coim_marca` varchar(10) DEFAULT NULL,
`coim_pos` varchar(5) DEFAULT NULL,
`cod_impresora` int(11) DEFAULT NULL,
72
`coim_tipo` varchar(100) DEFAULT NULL,
`cod_serie` int(11) DEFAULT NULL,
`coim_autorizacionsunat` varchar(25) DEFAULT NULL,
PRIMARY KEY (`cod_confimpresora`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for cronogramasunat
-- ---------------------------DROP TABLE IF EXISTS `cronogramasunat`;
CREATE TABLE `cronogramasunat` (
`cod_cronogramasunat` int(11) NOT NULL AUTO_INCREMENT,
`crgr_periodo` varchar(20) DEFAULT NULL,
`crgr_periodoanio` year(4) DEFAULT NULL,
`crgr_0` int(11) DEFAULT NULL,
`crgr_1` int(11) DEFAULT NULL,
`crgr_2` int(11) DEFAULT NULL,
`crgr_3` int(11) DEFAULT NULL,
`crgr_4` int(11) DEFAULT NULL,
`crgr_5` int(11) DEFAULT NULL,
`crgr_6` int(11) DEFAULT NULL,
`crgr_7` int(11) DEFAULT NULL,
`crgr_8` int(11) DEFAULT NULL,
`crgr_9` int(11) DEFAULT NULL,
`crgr_mes` varchar(15) DEFAULT NULL,
`crgr_anio` year(4) DEFAULT NULL,
`cod_mes` int(11) DEFAULT NULL,
PRIMARY KEY (`cod_cronogramasunat`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for documento
-- ---------------------------DROP TABLE IF EXISTS `documento`;
CREATE TABLE `documento` (
`cod_documento` int(11) NOT NULL AUTO_INCREMENT,
`docu_numero` varchar(8) DEFAULT NULL,
`docu_afecto` enum('SI','NO') DEFAULT NULL,
`cod_serie` int(11) NOT NULL,
`cod_almacen` int(11) NOT NULL,
`cod_comprobante` int(11) NOT NULL,
`docu_estado` enum('SI','NO') DEFAULT NULL COMMENT 'ACTIVO?',
PRIMARY KEY (`cod_documento`),
KEY `fk_documento_serie1` (`cod_serie`),
KEY `fk_documento_almacen1` (`cod_almacen`),
KEY `fk_documento_comprobante1` (`cod_comprobante`)
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for facturacion
-- ---------------------------DROP TABLE IF EXISTS `facturacion`;
CREATE TABLE `facturacion` (
`cod_facturacion` int(11) NOT NULL AUTO_INCREMENT,
`fact_fechaemision` datetime DEFAULT NULL,
`fact_pago` enum('Contado','Credito') DEFAULT 'Credito',
`fact_comprel` varchar(150) DEFAULT NULL,
`fact_monto` float DEFAULT NULL COMMENT 'venta->monto de venta',
`fact_descuento` float DEFAULT NULL,
`fact_subtotal` float DEFAULT NULL,
`fact_igv` float DEFAULT NULL,
`fact_total` float DEFAULT NULL,
`fact_vuelto` float DEFAULT NULL,
`fact_efectivo` float DEFAULT NULL,
`fact_serie` varchar(25) DEFAULT NULL COMMENT 'venta: serie -numero, compra: serie',
`fact_numero` varchar(12) DEFAULT NULL,
`fact_estado` enum('SI','NO') DEFAULT NULL COMMENT 'si: anulado, no: no anulado',
`cod_usuario` int(11) NOT NULL,
`cod_cliente` int(11) DEFAULT NULL,
`cod_comprobante` int(11) DEFAULT NULL,
`cod_almacen` int(11) NOT NULL,
`cod_impuestos` int(11) DEFAULT NULL,
`fact_tarjeta` varchar(150) DEFAULT NULL,
`fact_numoperacion` varchar(10) DEFAULT NULL,
`fact_afectastock` enum('SI','NO') NOT NULL,
`fact_observacion` varchar(500) DEFAULT NULL,
`fact_alias` varchar(150) DEFAULT NULL,
`fact_fechaanulacion` datetime DEFAULT NULL,
`fact_cajero` varchar(200) DEFAULT NULL,
`fact_motivo` enum('ANULACION','DESCUENTO','BONIFICACION','DEVOLUCION','COTIZACION','VENTA') DEFAULT NULL,
`cod_motivooperacion` int(11) DEFAULT NULL,
`fact_comisiontarjeta` double DEFAULT NULL,
`fact_tipotarjeta` enum('DEBITO','NINGUNO','CREDITO') DEFAULT NULL,
`cod_origen` int(4) DEFAULT NULL,
`cod_mesa` int(11) DEFAULT NULL,
PRIMARY KEY (`cod_facturacion`),
73
KEY `fk_facturacion_comprobante1` (`cod_comprobante`),
KEY `fk_facturacion_producto_almacen1` (`cod_almacen`),
KEY `fk_facturacion_usuario1` (`cod_usuario`),
KEY `fk_facturacion_cliente1` (`cod_cliente`),
KEY `fk_facturacion_impuestos1` (`cod_impuestos`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for impresora
-- ---------------------------DROP TABLE IF EXISTS `impresora`;
CREATE TABLE `impresora` (
`cod_impresora` int(11) NOT NULL AUTO_INCREMENT,
`impr_impresora` enum('MATRICIAL','TICKETERA') DEFAULT NULL,
`impr_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_impresora`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for impresorafisica
-- ---------------------------DROP TABLE IF EXISTS `impresorafisica`;
CREATE TABLE `impresorafisica` (
`cod_impresorafisica` int(11) DEFAULT NULL,
`imfi_impresora` varchar(255) DEFAULT NULL,
`cod_impresora` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for impuestos
-- ---------------------------DROP TABLE IF EXISTS `impuestos`;
CREATE TABLE `impuestos` (
`cod_impuestos` int(11) NOT NULL AUTO_INCREMENT,
`impu_descripcion` varchar(250) DEFAULT NULL,
`impu_observacion` varchar(100) DEFAULT NULL,
`impu_afecto` enum('SI','NO') DEFAULT NULL,
`impu_valor` double DEFAULT NULL COMMENT 'valor del igv en porcentaje',
`impu_formula` enum('MULTIPLICACION','DIVISION') DEFAULT NULL COMMENT 'formula del igv',
`impu_modocalculo` enum('MULTIPLICACION','DIVISION') NOT NULL DEFAULT 'MULTIPLICACION',
`impu_eliminado` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_impuestos`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for kardex
-- ---------------------------DROP TABLE IF EXISTS `kardex`;
CREATE TABLE `kardex` (
`cod_kardex` int(11) NOT NULL AUTO_INCREMENT,
`cod_facturacion` int(11) DEFAULT NULL,
`cod_compra` int(11) DEFAULT NULL,
`cod_almacen` int(11) NOT NULL,
`kard_fecha` datetime DEFAULT NULL,
`cod_producto` int(11) DEFAULT NULL,
`kard_movimiento` double DEFAULT NULL,
`cod_comprobante` int(11) DEFAULT NULL,
`kard_operacion` enum('INGRESO','EGRESO') DEFAULT NULL,
`cod_motivooperacion` int(11) NOT NULL,
`cod_traspaso` int(11) NOT NULL,
PRIMARY KEY (`cod_kardex`),
KEY `fk_kardex_facturacion1` (`cod_facturacion`),
KEY `fk_kardex_compra1` (`cod_compra`),
KEY `fk_kardex_producto_almacen1` (`cod_almacen`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for mesa
-- ---------------------------DROP TABLE IF EXISTS `mesa`;
CREATE TABLE `mesa` (
`cod_mesa` int(11) NOT NULL AUTO_INCREMENT,
`mesa_descripcion` varchar(100) DEFAULT NULL,
`mesa_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_mesa`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for moneda
-- ---------------------------DROP TABLE IF EXISTS `moneda`;
CREATE TABLE `moneda` (
74
`cod_moneda` int(11) NOT NULL AUTO_INCREMENT,
`mone_descripcion` varchar(150) DEFAULT NULL,
`mone_simbolo` varchar(10) DEFAULT NULL,
`mone_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_moneda`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for motivo_operacion
-- ---------------------------DROP TABLE IF EXISTS `motivo_operacion`;
CREATE TABLE `motivo_operacion` (
`cod_motivooperacion` int(11) NOT NULL AUTO_INCREMENT,
`mope_nombre` varchar(30) NOT NULL,
`mope_observacion` varchar(40) DEFAULT NULL,
`mope_formulario` enum('VENTA','COMPRA','ANULACION','TRASPASO','NOTACREDITO') NOT NULL COMMENT 'se usa para
definir a que formulario va..',
`mope_eliminado` enum('NO','SI') NOT NULL,
PRIMARY KEY (`cod_motivooperacion`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for ofertaproducto
-- ---------------------------DROP TABLE IF EXISTS `ofertaproducto`;
CREATE TABLE `ofertaproducto` (
`cod_oferta` int(11) NOT NULL AUTO_INCREMENT,
`ofer_precio` double DEFAULT NULL,
`ofer_descuento` double DEFAULT NULL,
`ofer_observacion` varchar(300) DEFAULT NULL,
`ofer_fechainicio` date DEFAULT NULL,
`ofer_activado` enum('SI','NO') DEFAULT NULL,
`cod_producto` int(11) DEFAULT NULL,
`ofer_fechavencimiento` date DEFAULT NULL,
PRIMARY KEY (`cod_oferta`),
UNIQUE KEY `oferta` (`ofer_activado`,`cod_producto`,`ofer_fechainicio`,`ofer_fechavencimiento`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for perfilusuario
-- ---------------------------DROP TABLE IF EXISTS `perfilusuario`;
CREATE TABLE `perfilusuario` (
`cod_perfil` int(11) NOT NULL AUTO_INCREMENT,
`perf_descripcion` varchar(100) DEFAULT NULL,
`perf_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_perfil`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for producto
-- ---------------------------DROP TABLE IF EXISTS `producto`;
CREATE TABLE `producto` (
`cod_producto` int(11) NOT NULL AUTO_INCREMENT,
`prod_serinumber` varchar(20) DEFAULT NULL COMMENT 'PARA CODIGO DE BARRAS',
`prod_descripcion` varchar(120) DEFAULT NULL,
`prod_nombrecorto` varchar(150) DEFAULT '',
`prod_observacion` text,
`prod_stockmin` int(11) DEFAULT NULL COMMENT 'referencial:para advertir que se está quedando con menos stockque requiere
actualmente',
`prod_costo` double NOT NULL,
`prod_precio` double NOT NULL,
`prod_preciocontado` double DEFAULT NULL,
`prod_descuento` float DEFAULT NULL,
`prod_porganancia` float DEFAULT NULL COMMENT 'porcentaje de ganancia',
`prod_tipocambio` float DEFAULT NULL,
`prod_imagen` varchar(400) DEFAULT NULL,
`prod_fecharegistro` datetime NOT NULL,
`cod_categoria` int(11) NOT NULL,
`prod_oferta` enum('SI','NO') NOT NULL,
`prod_xoferta` double DEFAULT NULL,
`prod_preciooferta` double DEFAULT NULL,
`prod_cantpromocion` int(11) DEFAULT NULL,
`prod_activo` enum('SI','NO') DEFAULT NULL,
`cod_cocina` int(11) DEFAULT NULL,
`prod_tipo` enum('PLATO','PRODUCTO') DEFAULT NULL,
PRIMARY KEY (`cod_producto`),
UNIQUE KEY `prod_descripcion` (`prod_descripcion`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
75
-- ----------------------------- Table structure for producto_almacen
-- ---------------------------DROP TABLE IF EXISTS `producto_almacen`;
CREATE TABLE `producto_almacen` (
`cod_proalm` int(11) NOT NULL AUTO_INCREMENT,
`proalm_stockinicial` int(11) DEFAULT NULL,
`proalm_stock` int(11) DEFAULT NULL,
`cod_producto` int(11) NOT NULL,
`cod_almacen` int(11) NOT NULL,
PRIMARY KEY (`cod_proalm`),
KEY `fk_producto_almacen_producto1` (`cod_producto`),
KEY `fk_producto_almacen_almacen1` (`cod_almacen`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for proveedor
-- ---------------------------DROP TABLE IF EXISTS `proveedor`;
CREATE TABLE `proveedor` (
`cod_proveedor` int(11) NOT NULL AUTO_INCREMENT,
`prov_ruc` varchar(12) DEFAULT NULL,
`prov_razonsocial` varchar(45) DEFAULT NULL,
`prov_direccion` varchar(200) DEFAULT NULL,
`prov_referencia` varchar(200) DEFAULT NULL,
`prov_gironegocio` varchar(100) DEFAULT NULL,
`prov_departamento` varchar(200) DEFAULT NULL,
`prov_provincia` varchar(45) DEFAULT NULL,
`prov_distrito` varchar(45) DEFAULT NULL,
`prov_celular` varchar(14) DEFAULT NULL,
`prov_fijo` varchar(15) DEFAULT NULL,
`prov_email` varchar(45) DEFAULT NULL,
`prov_nrocuenta` varchar(500) DEFAULT NULL,
`prov_activo` enum('SI','NO') DEFAULT NULL,
`cod_tipoproveedor` int(11) DEFAULT NULL,
`prov_whatsapp` varchar(100) DEFAULT NULL,
PRIMARY KEY (`cod_proveedor`),
UNIQUE KEY `proveedor` (`prov_ruc`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for serie
-- ---------------------------DROP TABLE IF EXISTS `serie`;
CREATE TABLE `serie` (
`cod_serie` int(11) NOT NULL AUTO_INCREMENT,
`seri_descripcion` varchar(250) DEFAULT NULL,
`seri_serie` varchar(40) DEFAULT NULL,
`seri_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_serie`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for tarjeta
-- ---------------------------DROP TABLE IF EXISTS `tarjeta`;
CREATE TABLE `tarjeta` (
`cod_tarjeta` int(11) NOT NULL AUTO_INCREMENT,
`tarj_tarjeta` varchar(150) DEFAULT NULL,
`tarj_obervacion` varchar(150) DEFAULT NULL,
`tarj_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_tarjeta`),
UNIQUE KEY `tarj_tarjeta` (`tarj_tarjeta`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for tipomovimiento
-- ---------------------------DROP TABLE IF EXISTS `tipomovimiento`;
CREATE TABLE `tipomovimiento` (
`cod_tipomovimiento` int(255) NOT NULL AUTO_INCREMENT,
`timo_descripcion` varchar(200) NOT NULL,
`timo_activo` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_tipomovimiento`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for tipoproveedor
-- ---------------------------DROP TABLE IF EXISTS `tipoproveedor`;
76
CREATE TABLE `tipoproveedor` (
`cod_tipoproveedor` int(11) NOT NULL AUTO_INCREMENT,
`tipo_descripcion` varchar(45) NOT NULL,
`tipo_activo` enum('NO','SI') DEFAULT NULL,
PRIMARY KEY (`cod_tipoproveedor`),
UNIQUE KEY `tipo_descripcion` (`tipo_descripcion`),
UNIQUE KEY `tipo_descripcion_2` (`tipo_descripcion`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for transaccion
-- ---------------------------DROP TABLE IF EXISTS `transaccion`;
CREATE TABLE `transaccion` (
`cod_transaccion` int(11) NOT NULL AUTO_INCREMENT,
`tran_cantidad` int(11) DEFAULT NULL,
`tran_precio` double DEFAULT NULL,
`tran_descuento` double DEFAULT NULL,
`tran_importe` double DEFAULT NULL,
`cod_producto` int(11) NOT NULL,
`cod_facturacion` int(11) NOT NULL,
`tran_igv` double DEFAULT NULL COMMENT 'solo cuando es afecto al igven documento ',
`tran_total` double NOT NULL,
`tran_lote` varchar(30) DEFAULT NULL,
`tran_fechavencimiento` varchar(15) DEFAULT NULL,
PRIMARY KEY (`cod_transaccion`),
KEY `fk_transaccion_producto1` (`cod_producto`),
KEY `fk_transaccion_facturacion1` (`cod_facturacion`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for transaccion_compra
-- ---------------------------DROP TABLE IF EXISTS `transaccion_compra`;
CREATE TABLE `transaccion_compra` (
`cod_transaccion` int(11) NOT NULL AUTO_INCREMENT,
`tran_cantidad` float DEFAULT NULL,
`tran_precio` float DEFAULT NULL,
`tran_descuento` float DEFAULT NULL,
`tran_importe` double DEFAULT NULL,
`cod_producto` int(11) NOT NULL,
`cod_compra` int(11) NOT NULL,
`tran_igv` double DEFAULT NULL,
`tran_total` double NOT NULL COMMENT 'total=igv+importe',
`tran_lote` varchar(20) DEFAULT NULL,
`tran_fechavencimiento` date DEFAULT NULL,
PRIMARY KEY (`cod_transaccion`),
KEY `fk_transaccion_producto1` (`cod_producto`),
KEY `fk_transaccion_compra_compra1` (`cod_compra`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for transportista
-- ---------------------------DROP TABLE IF EXISTS `transportista`;
CREATE TABLE `transportista` (
`cod_transporte` int(11) NOT NULL AUTO_INCREMENT,
`tran_nombre` varchar(45) DEFAULT NULL,
`tran_direccion` varchar(45) DEFAULT NULL,
`tran_ruc` varchar(12) DEFAULT NULL COMMENT 'dni\n',
`tran_distrito` varchar(45) DEFAULT NULL,
`tran_provincia` varchar(45) DEFAULT NULL,
`tran_movistar` varchar(15) DEFAULT NULL,
`tran_claro` varchar(15) DEFAULT NULL,
`tran_nextel` varchar(20) DEFAULT NULL,
`tran_fijo` varchar(20) DEFAULT NULL,
`tran_email` varchar(45) DEFAULT NULL,
`tran_fax` varchar(45) DEFAULT NULL,
`tran_placa` varchar(45) DEFAULT NULL,
`tran_marca` varchar(45) DEFAULT NULL,
`tran_vehiculo` varchar(45) DEFAULT NULL,
`tran_certificado` varchar(45) DEFAULT NULL,
`tran_licencia` varchar(45) DEFAULT NULL,
`tran_activo` enum('SI','NO') DEFAULT NULL,
`tran_chofer` varchar(45) DEFAULT NULL,
PRIMARY KEY (`cod_transporte`),
UNIQUE KEY `tran_nombre` (`tran_nombre`),
UNIQUE KEY `tran_ruc` (`tran_ruc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for traspaso
-- ---------------------------DROP TABLE IF EXISTS `traspaso`;
77
CREATE TABLE `traspaso` (
`cod_traspaso` int(11) NOT NULL AUTO_INCREMENT,
`cod_comprobante` int(11) NOT NULL,
`tras_serie` varchar(6) NOT NULL,
`tras_numero` varchar(10) NOT NULL,
`cod_motivooperacion` int(11) NOT NULL,
`tras_subtotal` double(11,5) NOT NULL DEFAULT '0.00000',
`tras_igv` double(11,5) NOT NULL DEFAULT '0.00000',
`tras_total` double(11,5) NOT NULL DEFAULT '0.00000' COMMENT 'valor total del traspaso',
`tras_percepcion` double(11,5) NOT NULL DEFAULT '0.00000',
`cod_almacen` int(11) NOT NULL COMMENT 'alamcen origen',
`cod_usuario` int(11) DEFAULT NULL,
`tras_fechatraspaso` datetime DEFAULT NULL,
`tras_fecharecepcion` datetime DEFAULT NULL,
`tras_recepcionado` enum('NO','SI') NOT NULL,
`tras_observacion` text,
`tras_partida` varchar(100) DEFAULT NULL,
`tras_llegada` varchar(100) DEFAULT NULL,
`cod_almacendestino` int(11) NOT NULL DEFAULT '0',
`cod_transportista` int(11) NOT NULL,
`cod_vehiculo` int(11) NOT NULL DEFAULT '0',
`cod_conductor` int(11) NOT NULL DEFAULT '0',
`tras_motivo` varchar(100) DEFAULT NULL,
`cod_proveedor` int(11) DEFAULT '0',
`cod_cliente` int(11) DEFAULT '0',
PRIMARY KEY (`cod_traspaso`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for traspaso_detalle
-- ---------------------------DROP TABLE IF EXISTS `traspaso_detalle`;
CREATE TABLE `traspaso_detalle` (
`cod_detalletraspaso` int(11) NOT NULL AUTO_INCREMENT,
`deta_cantidad` double(11,3) DEFAULT '0.000',
`deta_precio` double(11,5) DEFAULT '0.00000',
`deta_descuento` double(11,5) DEFAULT NULL,
`deta_importe` double(11,5) DEFAULT NULL,
`cod_producto` int(11) NOT NULL,
`cod_traspaso` int(11) NOT NULL,
`deta_igv` double(11,5) DEFAULT NULL,
`deta_total` double(11,5) DEFAULT '0.00000',
`deta_lote` varchar(20) DEFAULT NULL,
`deta_fechavencimiento` date DEFAULT NULL,
PRIMARY KEY (`cod_detalletraspaso`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for turnocaja
-- ---------------------------DROP TABLE IF EXISTS `turnocaja`;
CREATE TABLE `turnocaja` (
`cod_turno` int(11) NOT NULL AUTO_INCREMENT,
`turn_descripcion` enum('HE-MAÑANA','HS-MAÑANA','HE-TARDE','HS-TARDE','HE-NOCHE','HS-NOCHE') DEFAULT NULL,
`turn_turno` enum('MAÑANA','TARDE','NOCHE') DEFAULT NULL,
`turn_estado` enum('INGRESO','SALIDA') DEFAULT NULL,
`turn_horaingreso` time DEFAULT NULL,
`turn_horasalida` time DEFAULT NULL,
`turn_eliminado` enum('SI','NO') DEFAULT NULL,
PRIMARY KEY (`cod_turno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for ubigeo
-- ---------------------------DROP TABLE IF EXISTS `ubigeo`;
CREATE TABLE `ubigeo` (
`cod_ubigeo` int(11) NOT NULL AUTO_INCREMENT,
`ubig_departamento` varchar(250) DEFAULT NULL,
`ubig_provincia` varchar(250) DEFAULT NULL,
`ubig_distrito` varchar(250) DEFAULT NULL,
PRIMARY KEY (`cod_ubigeo`)
) ENGINE=InnoDB AUTO_INCREMENT=1840 DEFAULT CHARSET=latin1;
-- ----------------------------- Table structure for usuario
-- ---------------------------DROP TABLE IF EXISTS `usuario`;
CREATE TABLE `usuario` (
`cod_usuario` int(11) NOT NULL AUTO_INCREMENT,
`usua_usuario` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
78
`usua_clave` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
`usua_fecharegistro` date DEFAULT NULL,
`usua_activo` enum('SI','NO') CHARACTER SET latin1 DEFAULT NULL,
`cod_origen` int(11) NOT NULL,
`cod_perfil` int(11) NOT NULL,
`cod_almacen` int(11) DEFAULT NULL,
PRIMARY KEY (`cod_usuario`),
KEY `fk_Usuario_Personal1_idx` (`cod_origen`),
KEY `fk_Usuario_Perfil1_idx` (`cod_perfil`),
CONSTRAINT `usuario_ibfk_1` FOREIGN KEY (`cod_perfil`) REFERENCES `perfilusuario` (`cod_perfil`) ON DELETE NO
ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-- ----------------------------- View structure for vadsoft
-- ---------------------------DROP VIEW IF EXISTS `vadsoft`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` VIEW `vadsoft` AS SELECT
facturacion.cod_facturacion AS CODIGO,
CONVERT(facturacion.fact_serie, UNSIGNED INT) as SERIE,
CONVERT(facturacion.fact_numero, UNSIGNED INT) AS NUMERO,
DATE(facturacion.fact_fechaemision) AS FECFAC,
DATE(facturacion.fact_fechaemision) AS FECVEN,
if(CHAR_LENGTH(cliente.clie_ruc)=11,cliente.clie_ruc,'') AS NRO_RUC,
if(strcmp(facturacion.fact_estado,_latin1'NO'),'ANULADO',if(strcmp(facturacion.cod_cliente,(_utf8'NULL' or
_utf8'0')),cliente.clie_nombre,facturacion.fact_alias)) AS NOMBRE,
comprobante.comp_observacion AS TIPDOC,
'SOLES' AS TIPMON,
'' AS DETRAC,
if(strcmp(facturacion.fact_estado,_latin1'NO'),0,round(facturacion.fact_subtotal,2)) AS IMPVTA,
'' AS IMPINA,
'' AS RECARGO,
if(strcmp(facturacion.fact_estado,_latin1'NO'),0,round(facturacion.fact_igv,2)) AS IMPIGV,
if(strcmp(facturacion.fact_estado,_latin1'NO'),0,round(facturacion.fact_total,2)) AS IMPTOT,
if(strcmp(facturacion.fact_estado,_latin1'NO'),'A','') AS ST,
'' AS SER_DQM,
'' AS NUM_DQM,
'' AS FEC_DQM,
'' AS TIP_DQM,
'' AS SERIE_FIN,
'' AS NUMERO_FIN,
if(CHAR_LENGTH(cliente.clie_ruc)<>11,cliente.clie_ruc,'')AS NRO_DNI,
'' AS PASAPORTE
FROM
(((((facturacion
LEFT JOIN usuario ON ((facturacion.cod_usuario = usuario.cod_usuario)))
JOIN comprobante ON ((comprobante.cod_comprobante = facturacion.cod_comprobante)))
JOIN almacen ON ((almacen.cod_almacen = facturacion.cod_almacen)))
LEFT JOIN cliente ON ((cliente.cod_cliente = facturacion.cod_cliente))))
WHERE (comprobante.cod_comprobante='1' OR comprobante.cod_comprobante='2' OR comprobante.cod_comprobante='3') ;
-- ----------------------------- View structure for vcliente
-- ---------------------------DROP VIEW IF EXISTS `vcliente`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vcliente` AS SELECT
cliente.cod_cliente AS CODIGO,
cliente.clie_ruc AS RUC,
cliente.clie_nombre AS CLIENTE,
clientetipo.clti_nombre AS TIPOCLIENTE,
cliente.clie_direccion AS DIRECCION,
cliente.clie_departamento AS DEPARTAMENTO,
cliente.clie_provincia AS PROVINCIA,
cliente.clie_distrito AS DISTRITO,
cliente.clie_email AS EMAIL,
cliente.clie_movistar AS CELULAR,
cliente.clie_whatsapp AS WHATSAPP,
cliente.clie_fijo AS FIJO,
cliente.clie_nacimiento AS FNACIMIENTO,
cliente.clie_lineacredito,
cliente.clie_disponible,
cliente.clie_otorgado,
cliente.clie_activo AS ACTIVO,
cliente.cod_clientetipo
from (`cliente`
left join `clientetipo` on((`clientetipo`.`cod_clientetipo` = `cliente`.`cod_clientetipo`))) ;
-- ----------------------------- View structure for vcomisiontarjeta
-- ---------------------------DROP VIEW IF EXISTS `vcomisiontarjeta`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vcomisiontarjeta` AS
SELECT
comisiontarjeta.cod_tarjetacomision as CODIGO,
tarjeta.tarj_tarjeta AS TARJETA,
comisiontarjeta.taco_tipo AS TIPO,
79
comisiontarjeta.taco_porcentaje AS PORCENTAJE,
tarjeta.cod_tarjeta AS CODTARJETA,
comisiontarjeta.taco_activo as ACTIVO
FROM
comisiontarjeta
INNER JOIN tarjeta ON comisiontarjeta.cod_tarjeta = tarjeta.cod_tarjeta ;
-- ----------------------------- View structure for vcompra
-- ---------------------------DROP VIEW IF EXISTS `vcompra`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vcompra` AS SELECT
compra.cod_compra AS CODIGO,
comprobante.comp_descripcion AS COMPROBANTE,
compra.comp_serie AS SERIE,
compra.comp_numero AS NUMERO,
DATE(compra.comp_fechaemision) AS FEMISION,
compra.comp_pago AS FPAGO,
proveedor.prov_razonsocial AS PROVEEDOR,
proveedor.prov_ruc AS RUC,
proveedor.prov_direccion AS DIRECCION,
compra.comp_monto AS MONTO,
compra.comp_descuento AS DESCUENTO,
compra.comp_subtotal AS SUBTOTAL,
compra.comp_igv AS IGV,
compra.comp_total AS TOTAL,
compra.comp_percepcion as PERCEPCION,
if(moneda.cod_moneda=1,compra.comp_totalcompra,0) AS TOTALCOMPRA,
if(moneda.cod_moneda<>1,compra.comp_totalcompra,0) AS $TOTALCOMPRA,
compra.comp_tipocambio AS TC,
moneda.mone_descripcion AS MONEDA,
compra.comp_anulado AS ANULADO,
compra.comp_operacion AS OPERACION,
compra.comp_observacion AS OBERVACION,
compra.comp_motivo AS MOTIVO,
comprobante.comp_observacion AS TIPOCOMPROBANTE,
almacen.alma_descripcion AS ALMACEN,
usuario.usua_usuario AS usua_nombre,
usuario.usua_clave AS usua_celular,
usuario.usua_activo AS usua_estado,
compra.cod_moneda AS cod_moneda,
compra.cod_usuario AS cod_usuario,
compra.cod_comprobante AS cod_comprobante,
compra.cod_almacen AS cod_almacen,
compra.cod_proveedor AS cod_proveedor,
compra.cod_motivooperacion
from `compra`
left join `usuario` on `compra`.`cod_usuario` = `usuario`.`cod_usuario`
join `comprobante` on `comprobante`.`cod_comprobante` = `compra`.`cod_comprobante`
join `almacen` on `compra`.`cod_almacen` = `almacen`.`cod_almacen`
join `proveedor` on `proveedor`.`cod_proveedor` = `compra`.`cod_proveedor`
left join `moneda` on `compra`.`cod_moneda` = `moneda`.`cod_moneda` ;
-- ----------------------------- View structure for vdetallecompra
-- ---------------------------DROP VIEW IF EXISTS `vdetallecompra`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` VIEW `vdetallecompra` AS SELECT
transaccion_compra.cod_transaccion AS CODIGO,
producto.prod_descripcion AS PRODUCTO,
transaccion_compra.tran_cantidad AS CANT,
transaccion_compra.tran_precio AS PRECIO,
transaccion_compra.tran_importe AS IMPORTE,
transaccion_compra.tran_descuento AS DESCUENTO,
transaccion_compra.tran_total AS TOTAL,
producto.cod_producto AS cod_producto,
transaccion_compra.cod_compra AS cod_compra,
DATE(compra.comp_fechaemision) AS comp_fechaemision,
comprobante.cod_comprobante AS cod_comprobante,
compra.comp_serie AS SERIE,
compra.comp_numero AS NUMERO,
comprobante.comp_descripcion as COMP,
proveedor.prov_razonsocial AS PROVEEDOR,
proveedor.prov_ruc AS RUC,
compra.comp_subtotal,
compra.comp_igv,
compra.comp_total,
compra.comp_percepcion,
compra.comp_totalcompra,
proveedor.cod_proveedor
from `producto`
join `transaccion_compra` on `transaccion_compra`.`cod_producto` = `producto`.`cod_producto`
join `compra` on `transaccion_compra`.`cod_compra` = `compra`.`cod_compra`
join `comprobante` on `compra`.`cod_comprobante` = `comprobante`.`cod_comprobante`
join `proveedor` on `compra`.`cod_proveedor` = `proveedor`.`cod_proveedor` ;
80
-- ----------------------------- View structure for vdetallefactura
-- ---------------------------DROP VIEW IF EXISTS `vdetallefactura`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` VIEW `vdetallefactura` AS SELECT
transaccion.cod_transaccion AS CODIGO,
producto.prod_descripcion AS PRODUCTO,
transaccion.tran_cantidad AS CANT,
transaccion.tran_precio AS PRECIO,
transaccion.tran_importe AS IMPORTE,
transaccion.tran_descuento AS DESCUENTO,
transaccion.tran_total AS TOTAL,
transaccion.cod_producto,
transaccion.cod_facturacion,
date(facturacion.fact_fechaemision) as fact_fechaemision,
facturacion.cod_comprobante,
facturacion.fact_serie as SERIE,
facturacion.fact_numero as NUMERO,
comprobante.comp_descripcion as COMP,
facturacion.fact_estado
FROM
transaccion
INNER JOIN facturacion on facturacion.cod_facturacion=transaccion.cod_facturacion
LEFT JOIN producto ON producto.cod_producto = transaccion.cod_producto
inner join comprobante on comprobante.cod_comprobante=facturacion.cod_comprobante ;
-- ----------------------------- View structure for vdetalletraspaso
-- ---------------------------DROP VIEW IF EXISTS `vdetalletraspaso`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vdetalletraspaso` AS
SELECT
traspaso_detalle.cod_detalletraspaso AS CODIGO,
producto.prod_descripcion AS PRODUCTO,
traspaso_detalle.deta_cantidad AS CANT,
traspaso_detalle.cod_producto,
traspaso_detalle.cod_traspaso,
date(traspaso.tras_fechatraspaso) as fact_fechaemision,
traspaso.cod_comprobante,
traspaso.tras_serie as SERIE,
traspaso.tras_numero as NUMERO,
comprobante.comp_descripcion as COMP,
traspaso.cod_motivooperacion AS cod_motivooperacion,
motivo_operacion.mope_nombre
FROM
traspaso_detalle
INNER JOIN traspaso on traspaso.cod_traspaso= traspaso_detalle.cod_traspaso
LEFT JOIN producto ON producto.cod_producto = traspaso_detalle.cod_producto
inner join comprobante on comprobante.cod_comprobante=traspaso.cod_comprobante
join motivo_operacion on traspaso.cod_motivooperacion=motivo_operacion.cod_motivooperacion ;
-- ----------------------------- View structure for vdocumento
-- ---------------------------DROP VIEW IF EXISTS `vdocumento`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vdocumento` AS SELECT
documento.cod_documento AS cod_documento,
documento.docu_numero AS docu_numero,
documento.docu_afecto AS docu_afecto,
comprobante.cod_comprobante AS cod_comprobante,
comprobante.comp_descripcion AS comp_descripcion,
comprobante.comp_observacion AS comp_observacion,
serie.cod_serie AS cod_serie,
serie.seri_serie AS seri_serie,
almacen.cod_almacen AS cod_almacen,
almacen.alma_descripcion AS alma_descripcion,
almacen.alma_direccion AS alma_direccion,
documento.docu_estado AS docu_estado
from (((`documento` join `serie` on((`serie`.`cod_serie` = `documento`.`cod_serie`))) join `almacen` on((`almacen`.`cod_almacen` =
`documento`.`cod_almacen`))) join `comprobante` on((`comprobante`.`cod_comprobante` = `documento`.`cod_comprobante`)))
WHERE
documento.docu_estado = 'SI' ;
-- ----------------------------- View structure for vegresocaja
-- ---------------------------DROP VIEW IF EXISTS `vegresocaja`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vegresocaja` AS SELECT
caja.cod_caja,
date(caja.caja_fecha) AS FECHA,
comprobante.comp_descripcion AS COMP,
caja.caja_serienumero AS NUMERO,
if(cliente.cod_cliente is null , proveedor.prov_ruc, cliente.clie_ruc) AS RUC,
if(cliente.cod_cliente is null , caja.caja_persona, cliente.clie_nombre) AS PERSONA,
caja.caja_monto AS MONTO,
81
caja.caja_detalle AS CONCEPTO,
caja.caja_observacion AS OBSERVACION,
if(tipomovimiento.timo_descripcion is null,'',tipomovimiento.timo_descripcion) as timo_descripcion,
caja.cod_facturacion,
caja.cod_egreso,
caja.cod_comprobante
FROM
caja
left JOIN tipomovimiento ON caja.cod_tipomovimiento = tipomovimiento.cod_tipomovimiento
LEFT JOIN cliente ON caja.cod_cliente = cliente.cod_cliente
LEFT JOIN proveedor ON proveedor.cod_proveedor = caja.cod_proveedor
LEFT JOIN comprobante ON comprobante.cod_comprobante = caja.cod_comprobante
where caja.caja_operacion='EGRESO' and caja.cod_tipomovimiento<>3 ;
-- ----------------------------- View structure for vfacturacion
-- ---------------------------DROP VIEW IF EXISTS `vfacturacion`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vfacturacion` AS SELECT
facturacion.cod_facturacion AS CODIGO,
comprobante.comp_descripcion AS COMPROBANTE,
facturacion.fact_serie AS SERIE,
facturacion.fact_numero AS NUMERO,
date(facturacion.fact_fechaemision) AS FEMISION,
facturacion.fact_pago AS FPAGO,
if(facturacion.cod_cliente<>0,cliente.clie_nombre,facturacion.fact_alias) AS CLIENTE,
IF(facturacion.cod_cliente<>0,cliente.clie_ruc, '') as RUC,
IF(facturacion.cod_cliente<>0,cliente.clie_direccion, '') as DIRECCION,
facturacion.fact_monto AS IMPORTE,
facturacion.fact_descuento AS DESCT,
facturacion.fact_subtotal AS SUBTOTAL,
facturacion.fact_igv AS IGV,
facturacion.fact_total AS TOTAL,
facturacion.fact_estado AS ANULADO,
facturacion.fact_tarjeta AS TARJETA,
facturacion.fact_tipotarjeta AS TIPOTARJETA,
facturacion.fact_numoperacion AS NOPERACION,
facturacion.fact_comisiontarjeta AS XCOMISION,
facturacion.fact_fechaanulacion AS FANULACION,
facturacion.cod_comprobante,
facturacion.cod_usuario,
facturacion.cod_cliente,
origen.orig_descripcion,
time(facturacion.fact_fechaemision) AS HORA
FROM
facturacion
LEFT JOIN cliente ON cliente.cod_cliente = facturacion.cod_cliente
INNER JOIN comprobante ON comprobante.cod_comprobante = facturacion.cod_comprobante
left JOIN usuario on usuario.cod_usuario=facturacion.cod_usuario
left join origen on origen.cod_origen=usuario.cod_origen ;
-- ----------------------------- View structure for vmovimientocaja
-- ---------------------------DROP VIEW IF EXISTS `vmovimientocaja`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vmovimientocaja` AS
SELECT
caja.cod_caja AS CODIGO,
DATE(caja.caja_fecha) AS FECHA,
TIME(caja.caja_fecha) AS HORA,
if(comprobante.cod_comprobante<>'0',comprobante.comp_descripcion,'NINGUNO') AS DCTO,
caja.caja_serienumero AS NUMERO,
tipomovimiento.timo_descripcion AS TIPO,
caja.caja_detalle AS GLOSA,
IF(caja.cod_cliente<>0 OR caja.cod_cliente is null, cliente.clie_nombre,caja.caja_persona) AS ORIGEN,
FORMAT(IF(caja.caja_operacion='INGRESO',caja.caja_monto,'0'),2) AS INGRESO,
FORMAT(IF(caja.caja_operacion='EGRESO',caja.caja_monto,'0'),2) AS EGRESO,
FORMAT((IF(caja.caja_operacion='INGRESO',caja.caja_monto,'0')-IF(caja.caja_operacion='EGRESO',caja.caja_monto,'0') +
saldocaja(caja.caja_fecha,caja.cod_caja,TIME(caja.caja_fecha))),2) AS SALDO,
caja.caja_persona AS ENCARGADO,
caja.caja_observacion AS OBSERVACION,
caja.caja_afecta AS AFECTACAJA,
caja.caja_operacion AS OPERACION,
caja.cod_cliente,
caja.cod_proveedor,
caja.cod_usuario,
caja.cod_comprobante,
caja.cod_facturacion,
caja.cod_tipomovimiento,
caja.caja_fecharegistro
FROM
caja
LEFT JOIN comprobante ON caja.cod_comprobante = comprobante.cod_comprobante
LEFT JOIN facturacion ON caja.cod_facturacion = facturacion.cod_facturacion
LEFT JOIN cliente ON caja.cod_cliente = cliente.cod_cliente
LEFT JOIN proveedor ON caja.cod_proveedor = proveedor.cod_proveedor
82
left JOIN usuario ON caja.cod_usuario = usuario.cod_usuario
left JOIN tipomovimiento ON tipomovimiento.cod_tipomovimiento = caja.cod_tipomovimiento
order by caja.caja_fecha asc ;
-- ----------------------------- View structure for vofertaproducto
-- ---------------------------DROP VIEW IF EXISTS `vofertaproducto`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vofertaproducto` AS
SELECT
ofertaproducto.cod_oferta,
producto.prod_descripcion as PRODUCTO,
producto.prod_serinumber AS CODIGOBARRA,
producto.prod_preciocontado AS PRECIOVENTA,
ofertaproducto.ofer_descuento AS OFERTA,
ofertaproducto.ofer_precio AS PRECIOOFERTA,
ofertaproducto.ofer_observacion AS OBSERVACION,
ofertaproducto.ofer_fechainicio AS FINICIO,
ofertaproducto.ofer_fechavencimiento AS FFINAL,
categoria.cate_descripcion AS LINEA,
ofertaproducto.ofer_activado as ESTADO,
producto.cod_producto
FROM
ofertaproducto
INNER JOIN producto ON ofertaproducto.cod_producto = producto.cod_producto
LEFT join categoria on categoria.cod_categoria=producto.cod_categoria ;
-- ----------------------------- View structure for vproducto
-- ---------------------------DROP VIEW IF EXISTS `vproducto`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vproducto` AS SELECT
producto.cod_producto AS CODIGO,
producto.prod_serinumber AS BARRA,
producto.prod_descripcion AS PRODUCTO,
producto.prod_nombrecorto AS NOMBRECORTO,
cocina.coci_descripcion AS COCINA,
categoria.cate_descripcion AS TIPO,
producto.prod_costo AS COSTO,
if(producto.prod_oferta='SI',producto.prod_preciooferta, producto.prod_precio) AS PRECIO,
producto_almacen.proalm_stock AS STOCK,
producto_almacen.proalm_stockinicial AS STOCKINICIAL,
producto.prod_stockmin AS STOCKMIN,
producto.prod_tipocambio AS TC,
producto.cod_categoria,
cocina.cod_cocina,
producto.prod_oferta,
producto.prod_xoferta,
producto.prod_preciooferta,
producto.prod_cantpromocion,
producto.prod_activo,
almacen.alma_descripcion,
almacen.cod_almacen,
producto.prod_observacion,
producto.prod_imagen AS IMAGEN,
producto.prod_fecharegistro AS FREGISTRO,
producto.prod_preciocontado AS PRECIO2,
producto.prod_descuento AS DESCUENTO,
producto.prod_porganancia AS XGANANCIA,
producto.prod_serinumber AS FUENTEBARRA,
producto.prod_tipo
FROM
producto
LEFT JOIN categoria ON producto.cod_categoria = categoria.cod_categoria
LEFT JOIN producto_almacen ON producto.cod_producto = producto_almacen.cod_producto
INNER JOIN almacen ON producto_almacen.cod_almacen = almacen.cod_almacen
LEFT JOIN cocina ON producto.cod_cocina = cocina.cod_cocina
ORDER by producto.cod_producto asc ;
-- ----------------------------- View structure for vproveedor
-- ---------------------------DROP VIEW IF EXISTS `vproveedor`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vproveedor` AS SELECT
proveedor.cod_proveedor,
proveedor.prov_ruc AS RUC,
proveedor.prov_razonsocial AS PROVEEDOR,
tipoproveedor.tipo_descripcion AS TIPO,
proveedor.prov_direccion AS DIRECCION,
proveedor.prov_referencia AS REFERENCIA,
proveedor.prov_gironegocio AS GIRONEGOCIO,
proveedor.prov_celular AS CELULAR,
proveedor.prov_fijo AS TFIJO,
proveedor.prov_email AS EMAIL,
proveedor.prov_nrocuenta AS NROCUENTA,
83
proveedor.prov_departamento AS DEPARTAMENTO,
proveedor.prov_provincia AS PROVINCIA,
proveedor.prov_distrito AS DISTRITO,
proveedor.prov_activo AS ACTIVO,
proveedor.cod_tipoproveedor
FROM
proveedor
LEFT JOIN tipoproveedor ON proveedor.cod_tipoproveedor = tipoproveedor.cod_tipoproveedor ;
-- ----------------------------- View structure for vrepkardexcontable
-- ---------------------------DROP VIEW IF EXISTS `vrepkardexcontable`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vrepkardexcontable` AS
SELECT
kardex.cod_kardex AS cod_kardex,
date(kardex.kard_fecha) AS FECHA,
comprobante.comp_descripcion AS COMP,
if(`kardex`.`cod_traspaso`<>'0',traspaso.tras_numero,if(kardex.cod_facturacion<>'0',facturacion.fact_numero,compra.comp_numero
)) AS NUMERO,
producto.prod_descripcion AS PRODUCTO,
motivo_operacion.mope_nombre AS OPERACION,
if(strcmp(kardex.kard_operacion,'EGRESO'),0,kardex.kard_movimiento) AS EGRESO,
if(strcmp(kardex.kard_operacion,'INGRESO'),0,kardex.kard_movimiento) AS INGRESO,
if( STRCMP( kardex.kard_operacion, 'INGRESO' ), 0,kardex.kard_movimiento)-if( STRCMP( kardex.kard_operacion, 'EGRESO' ),0,
kardex.kard_movimiento ) + kardexstockinicial('2013-01-01 00:00:00', kardex.kard_fecha,kardex.cod_almacen ,
kardex.cod_producto,kardex.cod_kardex,time(kardex.kard_fecha),kardex.kard_movimiento ) as STOCKACTUAL,
kardex.cod_producto AS cod_producto,
kardex.cod_almacen as cod_almacen,
time(kardex.kard_fecha) AS hora
from `kardex`
left join `compra` on `compra`.`cod_compra` = `kardex`.`cod_compra`
left join `facturacion` on `facturacion`.`cod_facturacion` = `kardex`.`cod_facturacion`
left join `traspaso` on `traspaso`.`cod_traspaso` = `kardex`.cod_traspaso
join `producto` on `kardex`.`cod_producto` = `producto`.`cod_producto`
join `comprobante` on `kardex`.`cod_comprobante` = `comprobante`.`cod_comprobante`
left join `cliente` on `facturacion`.`cod_cliente` = `cliente`.`cod_cliente`
left join `proveedor` on `proveedor`.`cod_proveedor` = `compra`.`cod_proveedor`
join `motivo_operacion` on `motivo_operacion`.`cod_motivooperacion` = `kardex`.`cod_motivooperacion`
order by producto.prod_descripcion, kardex.kard_fecha, TIME(kardex.kard_fecha) asc ;
-- ----------------------------- View structure for vtraslado
-- ---------------------------DROP VIEW IF EXISTS `vtraslado`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vtraslado` AS SELECT
traspaso.cod_traspaso AS cod_traspaso,
traspaso.cod_comprobante AS cod_comprobante,
traspaso.tras_fechatraspaso AS tras_fechatraspaso,
traspaso.tras_fecharecepcion AS tras_fecharecepcion,
comprobante.comp_descripcion AS comp_descripcion,
traspaso.tras_serie AS tras_serie,
traspaso.tras_numero AS tras_numero,
traspaso.tras_motivo,
traspaso.tras_partida AS tras_partida,
traspaso.tras_llegada AS tras_llegada,
traspaso.tras_subtotal AS tras_subtotal,
traspaso.tras_igv AS tras_igv,
traspaso.tras_total AS tras_total,
traspaso.tras_percepcion AS tras_percepcion,
traspaso.tras_observacion AS tras_observacion,
almacen.alma_descripcion AS alma_descripcion,
almacen.alma_direccion AS alma_direccion,
traspaso.cod_almacen AS cod_almacen,
traspaso.cod_usuario AS cod_usuario,
traspaso.cod_almacendestino AS cod_almacendestino,
traspaso.cod_transportista AS cod_transportista,
traspaso.cod_vehiculo AS cod_vehiculo,
traspaso.cod_conductor AS cod_conductor,
traspaso.cod_motivooperacion AS cod_motivooperacion,
usuario.usua_usuario,
traspaso.tras_recepcionado,
traspaso.cod_proveedor,
motivo_operacion.mope_nombre
from `traspaso` join `comprobante`
on `comprobante`.`cod_comprobante` = `traspaso`.`cod_comprobante`
left join `usuario` on `usuario`.`cod_usuario` = `traspaso`.`cod_usuario`
LEFT join `almacen` on `almacen`.`cod_almacen` = `traspaso`.`cod_almacendestino`
join motivo_operacion on traspaso.cod_motivooperacion=motivo_operacion.cod_motivooperacion ;
-- ----------------------------- View structure for vusuario
-- ---------------------------DROP VIEW IF EXISTS `vusuario`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vusuario` AS SELECT
usuario.cod_usuario,
origen.orig_descripcion as PERSONAL,
84
perfilusuario.perf_descripcion AS CARGO,
usuario.usua_usuario AS USUARIO,
usuario.usua_clave AS CLAVE,
usuario.usua_activo AS ACTIVO,
usuario.cod_origen,
usuario.cod_perfil,
usuario.cod_almacen,
almacen.alma_descripcion AS ALMACEN
FROM
usuario
INNER JOIN perfilusuario ON usuario.cod_perfil = perfilusuario.cod_perfil
INNER JOIN almacen ON usuario.cod_almacen = almacen.cod_almacen
INNER JOIN origen ON origen.cod_origen = usuario.cod_origen ;
-- ----------------------------- Function structure for kardexstockinicial
-- ---------------------------DROP FUNCTION IF EXISTS `kardexstockinicial`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `kardexstockinicial`(finico datetime,ffinal datetime,codalmacen int,codproducto
int,codkardex int, horak time,cantidad float) RETURNS float(11,3)
DETERMINISTIC
BEGIN
DECLARE stockinicial FLOAT;
DECLARE ingreso FLOAT;
DECLARE salida FLOAT;
declare contarsalida int;
declare contaringreso int;
DECLARE salidaactual float;
DECLARE inicial float;
SET salida=0;
SET ingreso=0;
SET salidaactual=0;
set contarsalida=0;
set contaringreso=0;
set inicial=0;
#DECLARE fechainico DATE;
#DECLARE fechafinal DATE;
SET inicial =(SELECT proalm_stockinicial FROM `producto_almacen` WHERE `cod_almacen` = codalmacen and
cod_producto = codproducto);
SET contarsalida =(SELECT COUNT(cod_kardex) FROM `kardex` WHERE `cod_almacen` = codalmacen AND
DATE(kard_fecha) = DATE(ffinal) and time(kard_fecha)=horak and cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion = 'EGRESO' and cod_kardex<=codkardex);
SET contaringreso =(SELECT COUNT(cod_kardex) FROM `kardex` WHERE `cod_almacen` = codalmacen AND
DATE(kard_fecha) = DATE(ffinal) and time(kard_fecha)=horak and cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion = 'INGRESO' and cod_kardex<=codkardex);
if contarsalida>1 then
SET salida =(SELECT IF( SUM( kard_movimiento ) IS NULL , 0, SUM( kard_movimiento ) ) FROM `kardex`
WHERE `cod_almacen` = codalmacen AND kard_fecha <= ffinal and cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=7 AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion = 'EGRESO'
and cod_kardex<codkardex);
SET salida=salida;
else
SET salida =(SELECT IF( SUM( kard_movimiento ) IS NULL , 0, SUM( kard_movimiento ) ) FROM `kardex`
WHERE `cod_almacen` = codalmacen AND kard_fecha < ffinal and cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=7 AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion = 'EGRESO');
end if;
if contaringreso>1 then
SET ingreso =(SELECT IF( SUM( kard_movimiento ) IS NULL , 0, SUM( kard_movimiento ) ) FROM `kardex`
WHERE `cod_almacen` = codalmacen AND kard_fecha <= ffinal AND cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=7 AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion = 'INGRESO'
and cod_kardex<codkardex);
SET ingreso=ingreso;
else
SET ingreso =(SELECT IF( SUM( kard_movimiento ) IS NULL , 0, SUM( kard_movimiento ) ) FROM `kardex`
WHERE `cod_almacen` = codalmacen AND kard_fecha < ffinal AND cod_producto = codproducto AND cod_motivooperacion !=15
AND cod_motivooperacion !=7 AND cod_motivooperacion !=16 AND cod_motivooperacion !=17 AND kard_operacion =
'INGRESO');
end if;
SET stockinicial=ingreso-salida+inicial;
RETURN stockinicial;
END
;;
DELIMITER ;
-- ----------------------------- Function structure for saldocaja
-- ---------------------------DROP FUNCTION IF EXISTS `saldocaja`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `saldocaja`(ffinal datetime, codcaja int, horak time) RETURNS float(11,3)
85
DETERMINISTIC
BEGIN
DECLARE saldo FLOAT;
DECLARE ingreso FLOAT;
DECLARE salida FLOAT;
declare contarsalida int;
declare contaringreso int;
DECLARE salidaactual float;
SET salida=0;
SET ingreso=0;
SET salidaactual=0;
set contarsalida=0;
set contaringreso=0;
#DECLARE fechainico DATE;
#DECLARE fechafinal DATE;
SET contarsalida =(SELECT COUNT(cod_caja) FROM `caja` WHERE DATE(caja_fecha) = DATE(ffinal) and
time(caja_fecha)=horak and caja_operacion = 'EGRESO' and cod_caja<=codcaja);
SET contaringreso =(SELECT COUNT(cod_caja) FROM `caja` WHERE dATE(caja_fecha) = DATE(ffinal) and
time(caja_fecha)=horak and caja_operacion = 'INGRESO' and cod_caja<=codcaja);
if contarsalida>1 then
SET salida =(SELECT IF( SUM( caja_monto ) IS NULL , 0, SUM( caja_monto ) ) FROM `caja` WHERE
caja_fecha <= ffinal and caja_operacion = 'EGRESO' and cod_caja<codcaja);
SET salida=salida;
else
SET salida =(SELECT IF( SUM( caja_monto ) IS NULL , 0, SUM( caja_monto ) ) FROM `caja` WHERE
caja_fecha < ffinal AND caja_operacion = 'EGRESO');
end if;
if contaringreso>1 then
SET ingreso =(SELECT IF( SUM( caja_monto ) IS NULL , 0, SUM( caja_monto ) ) FROM `caja` WHERE
caja_fecha <= ffinal and caja_operacion = 'INGRESO' and cod_caja<codcaja);
SET ingreso=ingreso;
else
SET ingreso =(SELECT IF( SUM( caja_monto ) IS NULL , 0, SUM( caja_monto ) ) FROM `caja` WHERE
caja_fecha < ffinal AND caja_operacion = 'INGRESO');
end if;
SET saldo=ingreso-salida;
RETURN saldo;
END
;;
DELIMITER ;
86
4.7.
PRUEBAS
Para documentar las pruebas del software se ha diseñado un instrumento o tabla en la cual se especifican las
pruebas realizadas a cada módulo y los resultados obtenidos.
Se realizarán las pruebas de cada módulo a través de la ejecución de una tarea específica. Es importante destacar
que no se está siguiendo estrictamente una metodología de pruebas de ingeniería de software, sino que se está haciendo
uso de los pasos esenciales de dichas metodologías para la aplicación específica desarrollada, en la que se espera
obtener los diferentes resultados del sistema
OPCIÓN O
MODULO A
PROBAR
Inicio
DESCRIPCIÓN DE
CASO DE PRUEBA
PRE
CONDICIONES
O DATOS
PASOS
Verificar que el inicio
de
sesión
sea
exitoso al ingresar
con los datos de un
usuario valido
El sistema debe
permitir visualizar
la pantalla de
inicio con sus
campos
correspondientes.
El
usuario
ingresa
el
nombre
de
usuario,
la
contraseña
y
hace click en
iniciar.
Verificar
que
al
iniciar sesión con
datos no validos el
sistema indique que
estos
son
incorrectos
El sistema debe
permitir visualizar
la pantalla de
inicio con sus
campos
correspondientes
RESULTADO
ESPERADO
RESULTADO
REAL
ingresar
a
la
interfaz
correspondiente al Correcto
usuario
autenticado
OBSERVACIONES
/COMENTARIOS
Ninguna
ESTADO
(CONCLUIDO,
PENDIENTE, EN
PROCESO)
Concluido
de
sesión
Se ingresa el
nombre
de El sistema debe
usuario,
la validar los datos e
contraseña
y indicar que los Incorrecto
hace
ingresados
son
incorrectos
click en iniciar.
87
Es sistema muestra
Concluido
un error de código
El sistema debe
permitir visualizar
la pantalla de
inicio con sus
campos
correspondientes
Se ingresa el
nombre
de
usuario
y
contraseña,
teniendo
en
cuenta que uno
de estos dos no
sea válido; se
hace click en
ingresar
El sistema debe
validar los datos e
indicar que los correcto
datos ingresados
son incorrectos
Se ha realizado
Las modificaciones
pertinentes
del
Concluido
código y corregido
el
error
que
presentaba
Haber ingresado
al sistema como
administrador y
Verificar
que
el
haber
cree
Administrar sistema
seleccionado las
cuentas de usuarios
opciones
de forma correcta
Administrar
Usuarios y Nuevo
Usuario.
Se ingresan los
datos
correspondientes
“Nombre,
Apellido, etc…” y
por
ultimo
selecciona
la
opción agregar
El sistema debe
crear el usuario y
mostrar
un
Correcto
mensaje en el cual
indica que la tarea
ha sido exitosa
Ninguna
Se ingresan en
los
diferentes
campos
del
formulario datos
que
no
corresponden a
estos,
por
ejemplo: Si se
tiene un campo
teléfono el cual
espera
solo
números se le
ingresan letras,
etc…
El sistema debe
mostrar
un
mensaje de error
en cual indique
Incorrecto
que el tipo de
datos ingresado en
el
campo
que
corresponde
El sistema permite
ingresar tipos de
datos en campos
que
no Pendiente
corresponde
y
continúa con el
proceso.
Verificar
que
al
iniciar sesión con
datos no validos el
sistema indique que
estos
son
incorrectos
usuario
Verificar que los
campos
solo
permitan ingresar el
tipo de datos que le
corresponde
(numérico
o
alfanumérico)
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana del
formulario
de
nuevo usuario
88
Correcto
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana del
formulario
de
nuevo usuario
Se ingresan en
los
diferentes
campos
del
formulario
espacios
en
blanco.
Por
ejemplo en el
campo nombre:
ingresar
únicamente
espacios
El sistema debe
mostrar
un
mensaje de error
Correcto
que indique que
los campos son
requeridos.
El sistema muestra
un mensaje de
error indicando que
es
necesario
Concluido
ingresar
la
información de los
campos
del
formulario
Verificar
que
al
realizar la acción
eliminar
usuario,
efectivamente
lo
elimine del sistema
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana del
eliminar usuario
Se ingresa a la
opción eliminar
usuario,
se
selecciona
el
usuario que se
desea eliminar y
finalmente
se
selecciona
la
opción “Eliminar
usuario”
El sistema debe
mostrar
un
mensaje sobre el Correcto
éxito de la tarea
realizada
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Verificar que en la
sección
eliminar
usuario,
al
seleccionar la opción
“eliminar usuario” sin
haber seleccionado
uno
previamente
aparezca
un
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana del
eliminar usuario
Se ingresa a la
opción eliminar
usuario
y
finalmente
se
selecciona
la
opción “Eliminar
usuario”
El sistema debe
mostrar
un
mensaje de error
Correcto
que indique que el
campo usuario es
necesario
El sistema muestra
un
mensaje
indicando que el Concluido
campo usuario es
necesario
Verificar
que
al
ingresar espacios en
blanco
en
los
campos requeridos
para la creación de
un nuevo usuario
emita el error de
campos requeridos
Administrar
usuario
89
mensaje de error
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
“ingresar
categoría”
Dentro de la
opción “producto
” seleccionar la
opción “ingreso
al
almacén,
ingresar
categoría”, en el
campo
nueva
categoría
El sistema debe
mostrar
un
mensaje sobre el Correcto
éxito de la tarea
realizada
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Verificar
que
al
realizar la acción
nueva
Administrar ingresar
categoría
sin
inventario
diligenciar el campo
correspondiente el
sistema muestre un
mensaje de error
informando sobre la
acción
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
“ingresar
categoría”
Dentro de la
opción “Producto
ingreso
al
almacén”
diligenciar
el
formulario
con
los
datos
requeridos
y
finalmente
seleccionar
la
opción agregar
El sistema debe
mostrar
un
mensaje de error
Correcto
que indique que el
campo
es
necesario
El sistema muestra
un
mensaje
indicando que el Concluido
campo usuario es
necesario
Verificar
que
al
seleccionar la opción
agregar sin ingresar
los
datos
del
formulario el sistema
muestre un mensaje
de error
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
“nuevo
inventario”
Dentro de la
opción
“Producto”
seleccionar
la
opción “ingreso
al
almacén,
diligenciar
el
El sistema debe
mostrar
un
mensaje de error
Correcto
que indique que el
campo usuario es
necesario
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Verificar
que
al
ingresar una nueva
categoría dentro del
inventario,
se
agregue
correctamente
al
mismo
90
Verificar
que
al
ingresar los datos
del formulario para
realizar un nuevo
inventario,
el
sistema muestre un
mensaje de éxito
sobre dicha tarea
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
“ingresar
al
almacén”
Verificar
que
al
seleccionar la opción
“nuevo producto” y
al ingresar los datos
correspondientes el
sistema muestre un
mensaje informando
sobre el éxito de la
tarea
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
ingresar
productos en la
opción
nuevo
producto
Verificar
que
al
agregar un nuevo
producto no permita
ingresar el producto
en caso de que este
exista
Haber ingresado
al sistema como
administrador,
encontrarse en la
sesión producto y
haber
formulario
con
los
datos
requeridos
y
finalmente
seleccionar
la
opción agregar
Dentro de la
opción “producto”
seleccionar
la
opción “ingresar
al
almacén”,
diligenciar
el
formulario
y
finalmente
seleccionar
la
opción agregar.
El sistema debe
mostrar
un
mensaje sobre el Correcto
éxito de la tarea
realizada
El sistema muestra
un
mensaje
indicando que los Concluido
campos
son
necesarios
Dentro de la
opción
“producto”, luego
diligenciar
los
campos
del
formulario
y
finalmente
seleccionar
la
opción agregar
El sistema debe
mostrar
un
mensaje indicando
Correcto
que la tarea ha
sido realizado con
éxito
El sistema muestra
un
mensaje
indicando el éxito Concluido
de
la
tarea
realizada
Dentro de la
opción “producto”
seleccionar
la
opción
“nuevo
producto”, luego
ingresar
un
El sistema deberá
mostrar
un
mensaje indicando
Incorrecto
que
el
campo
nombre
debe
contener un valor
El
sistema
almacena
dos
productos con el Concluido
mismo
nombre,
precio y clase
91
Verificar
que
al
seleccionar la opción
“modificar producto
”, al seleccionar la
Administrar opción
editar
producto el sistema
permita
modificar
correspondientes a
cada producto
productos
Verificar
que
al
seleccionar la opción
“modificar producto”,
al seleccionar la
opción
editar
y
agregar el sistema
permita visualizarse
por el usuario
seleccionado la producto que ya
opción ingresar exista
y
producto
finalmente
seleccionar
la
opción agregar
Dentro de la
opción “producto”
la
Haber ingresado seleccionar
al sistema como opción “modificar
administrador y producto”,
estar ubicado en seleccionar del
la ventana de menú
el
productos en la desplegable
opción modificar producto a ser
producto, agregar modificado,
seleccionar
la
opción editar
Haber ingresado
al sistema como
administrador y
estar ubicado en
la ventana de
productos en la
opción modificar
producto, agregar
Dentro de la
opción “producto”
seleccionar
la
opción “modificar
producto”,
seleccionar del
menú
desplegable
el
producto a ser
modificado
único, es decir que
este ya existe
El sistema debe
mostrar el producto
con la lista de que Correcto
han
sido
agregados
El sistema muestra
los
productos Concluido
agregados
El sistema debe
mostrar el producto
con
la
lista
Correcto
cantidad de que
han
sido
agregados
El sistema muestra
el producto con la
Concluido
cantidad de cada
ingrediente
92
Haber ingresado
Verificar
que
al
al sistema como
seleccionar
un
administrador y
producto
para
estar ubicado en
eliminar, este sea
la ventana de
correctamente
productos en la
eliminado
del
opción eliminar
sistema
producto.
Dentro de la
opción “producto”
seleccionar
el
producto que se
desea eliminar y
finalmente
seleccionar
la
opción “eliminar
producto”
El sistema debe
mostrar
un
mensaje indicando
Correcto
que la tarea ha
sido realizada con
éxito
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Haber ingresado
Verificar que al crear
al sistema como
una nueva mesa el
administrador y
sistema realice la
estar ubicado en
tarea correctamente
la opción mesa
Dentro de la
opción
nueva
mesa ingresar el
nombre de la
mesa, el cual
debe
contener
caracteres
alfabéticos y un
identificador
numérico
y
finalmente
seleccionar
la
opción agregar
El sistema debe
mostrar
un
mensaje indicando
Correcto
que la tarea ha
sido realizada con
éxito
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Administrar
productos
Administrar
93
mesas
Consultar
Haber ingresado
Verificar
que
al al sistema como
eliminar una mesa el administrador y
sistema realice la estar ubicado en
tarea correctamente la opción eliminar
mesa
En la opción
eliminar
mesa
seleccionar
la
mesa que se
desea eliminar,
seguido la opción
eliminar
El sistema debe
mostrar
un
mensaje indicando
Correcto
que la tarea ha
sido realizada con
éxito
El sistema muestra
un
mensaje
indicando que la Concluido
tarea
ha
sido
realizada con éxito
Verificar
que
el
sistema muestre al
usuario las ventas
consultadas en un
rango de tiempo
determinado
Se ingresa en los
campos consultar
desde
y
Consultar hasta
las fechas entre
las cuales se
desea realizar la
consulta
El sistema debe
proporcionar
la
información
Correcto
correspondiente al
rango de tiempo
El
sistema
efectivamente
despliega en la
ventana
la Concluido
información
que
corresponde a las
fechas consultadas
Haber ingresado
al sistema como
administrador, y
estas ubicado en
la
opción
Consultar Ventas
ventas
94
4.8.
IMPLANTACIÓN DEL SISTEMA
Este programa básicamente está diseñado para administrar y controlar las
ventas en caja y almacén, de los productos que ingresan y salen
En caja:
Cobranza a los comensales, ya que en esta opción se ingresa los pedido de
las mesas correspondientes y posteriormente
son atendidos (esta solo
sucede los fines de semana y feriado---- primero se paga luego son
atendidos) y los días normales (primero son los pedidos y luego se paga)
Almacen: ingreso y salida de los productos para la elaboración de las
comidas, y otros productos como gaseosas, cervezas, etc.
Seguidamente se presenta una visión general de los apartados de la
aplicación:
Inicio, donde nos pedirá que insertemos nuestro usuario y
contraseña para validarnos y darnos acceso al sistema.
Menú principal, mostrará un menú superior para acceder a todas
las secciones del sistema.
Producto, permitirá una vista de los submenús de: configuración
donde el usuario podrá ingresar o modificar los datos; platos,
productos, almacén y reporte.
Ventas este menú permitirá la gestión de los clientes, ventas
reimprimir y anular venta, Reporte, Pedido mesero, Anular Pedido.
Caja, este menú no permitirá hacer el cierre de caja, registro de
egreso y movimiento de caja.
Mantenimiento, permitirá hacer el mantenimiento de la base de datos,
configuración, personal, usuario, inicializar caja y ADESOFT.
95
A continuación, detallamos las interfaces del sistema.
Este módulo permite la validación de todos los usuarios registrados en la
base de datos del sistema, se presenta el controlador de dicho módulo,
donde se validan los datos identificación y contraseña de usuario
Este módulo es el mayor contenedor de métodos de toda la aplicación,
contiene los módulos de Productos, Ventas, Caja y Mantenimiento.
96
MENÚ PRODUCTO, SUB MENÚ CONFIGURACIÓN, OPCIÓN
CATEGORÍA
Esta opción nos permite crear las categorías de los productos donde se
puede registrar, editar o eliminar las categorías.
MENÚ PRODUCTO, SUB MENÚ CONFIGURACIÓN, OPCIÓN MESA
Esta opción nos permite crear las Mesas del salón, esta opción se puede
registrar, editar o eliminar las mesas.
97
98
MENÚ PRODUCTO, SUB MENÚ PLATOS
Este sub menu nos permite crear Los platos de la carta, esta opción se
puede registrar, editar o eliminar los menús de la carta.
99
MENÚ PRODUCTO, SUB MENÚ PRODUCTOS
Este sub menú nos permite crear Los productos de venta, esta opción se
puede registrar o eliminar los productos de venta.
MENÚ PRODUCTO, SUB MENÚ ALMACEN
Este sub menú nos permite crear Ingresar los productos al almacén.
100
MENÚ PRODUCTO, SUB MENÚ ALMACEN
Este sub menu nos permite crear Las salidas de los productos de consumo
ya sea que está dañado, malogrado, devolución, etc.
MENÚ PRODUCTO, SUB MENÚ REPORTES (ingreso y salida del
almacen)
Este sub menu nos permite crear el reporte de los productos ya sea de
ingreso y salida.
101
MENÚ PRODUCTO, SUB MENÚ REPORTES (detalle ingreso al almacén
y detalle salida almacén)
Esta opción nos permite crear el reporte de los productos detallados
ingresando una fecha de inicio y final para poder visualizar el rango de
tiempo
102
MENÚ PRODUCTO, SUB MENÚ REPORTES (Kardex)
Esta opción nos permite crear el reporte de los productos detallados
ingresando una fecha de inicio y final para poder visualizar el rango de
tiempo
MENÚ VENTAS, SUB MENÚ CLIENTES
Esta opción nos permite
registrar, editar y eliminar a los clientes de la
empresa
103
MENÚ VENTAS, SUB MENÚ VENTA.
Esta opción nos permite registrar la venta del producto
con relación al
número de mesa
MENÚ VENTAS, SUB MENÚ REIMPRIMIR Y ANULAR VENTA.
Esta opción nos permite volver a imprimir y eliminar la venta registrada
anteriormente.
104
MENÚ VENTAS, SUB MENÚ REPORTE (ingreso VS fechas).
Esta opción nos permite
visualizar los ingresos de una manera gráfica
donde se indica la fecha de inicio y final.
MENÚ VENTAS, SUB MENÚ REPORTE (producto con más ventas)
Esta opción nos permite visualizar los productos con más ventas de una
manera gráfica donde se indica la fecha de inicio y final.
105
MENÚ VENTAS, SUB MENÚ REPORTE (lista de ventas)
Esta opción nos permite visualizar la lista de ventas de los productos, donde
se indica la fecha de inicio y final
MENÚ VENTAS, SUB MENÚ REPORTE (lista detalle de ventas)
Esta opción nos permite visualizar la lista de ventas de los productos, donde
se indica la fecha de inicio y final
106
MENÚ VENTAS, SUB MENÚ PEDIDO MESERO
Este módulo de pedidos permite registrar los productos para la venta de
acuerdo al número de mesa y también permitirá incrementar más pedidos en
dichas mesas
MENÚ VENTAS, SUB MENÚ VER Y ELIMINAR PEDIDO
Este módulo de pedidos permite visualizar los pedidos y luego proceder a
eliminarlo de acuerdo al número de mesa y las fechas de inicio y final
107
MENÚ CAJA, SUB MENÚ CIERRE DE CAJA
Esta opción de caja nos permite hacer el cierre de caja para poder saber
cuánto es el ingreso del día.
108
MENÚ CAJA, SUB MENÚ REGISTRO DE EGRESO
Esta opción de registro de egreso nos permite hacer el ingreso de los gastos
ocurridos durante el día
MENÚ CAJA, SUB MENÚ MOVIMIENTO DE CAJA
109
MENÚ MANTENIMIENTO, SUB MENÚ OPERACIÓN BASE DE DATOS
Esta opción nos permite hacer las respectivas reparaciones, optimizar y
crear copia de respaldo de la base de datos.
MENÚ MANTENIMIENTO, SUB MENÚ CONFIGURACION SISTEMA
Esta opción
nos permite hacer los respectivos cambios de nombre del
sistema
110
MENÚ MANTENIMIENTO, SUB MENÚ PERSONAL
Esta opción nos permite registrar, editar, eliminar al personal que labora en
la empresa.
MENÚ MANTENIMIENTO, SUB MENÚ USUARIO
Esta opción nos permite guardar, eliminar al usuario que tiene acceso al
sistema de la empresa.
111
MENÚ MANTENIMIENTO, SUB MENÚ INICIALIZAR CAJA
Esta opción nos permite inicializar la caja, ingresando al usuario y la fecha
del día.
MENÚ MANTENIMIENTO, SUB MENÚ ADSOFT
Esta
opción
nos
permite
generar
un
reporte
en
Excel
con
las
especificaciones correspondientes del contador ya que ellos usan el software
ADSOFT
112
CONCLUSIONES
El sistema yaudo a mejorar los procesos de:
Con la implementación del sistema informático se puedo evidenciar la
mejora en las ventas pues la atención era más rápida y sin errores en
los pedidos.
Con la implementación del sistema informático se puedo evidenciar la
mejora en la gestión caja ya que saber que se gastó y que se vendió
toma el menor tiempo posible.
Con la implementación del sistema informático se puedo evidenciar la
mejora en gestión de almacén pues se sabe con exactitud qué
productos existen o no en el almacén.
Ya que se mejoró en la gestión de ventas, caja y almacén es más que
evidente que se mejoró la calidad en el servicio en el RECREO
FALCON.
113
RECOMENDACIONES
Con respecto a la atención al cliente, ya que el sistema ha mejorado
la velocidad de atención con el cliente se le recomienda al personal
una pequeña capacitación de atención para así apoyar a que el
sistema cumpla la función para la que ha sido creada.
Se alienta realizar un mantenimiento preventivo y correctivo del
sistema de manera periódica para evitar un mal funcionamiento.
Se recomienda la implementación a futuro de un módulo de
facturación electrónica.
114
REFRENCIAS BIBLIOGRÁFICAS
Bertalanffy, L. V. (1976). Teoría General de los Sistemas.
México: Fondo de Cultura Económica.
Davis, Gordon M y Olson, Margrethe H. (1994). Sistemas de
Información Gerencial. McGraw-Hill.
ITSA. (2008). Metodologías De Desarrollo De Software. Canada:
Canada Pen.
Márquez Redhead, J. (2013). Implementación de un sistema de
información que apoye el proceso diario de elaboración de
cronogramas del personal de medicina física y rehabilitación de
un hospital (tesis de Grado). Universidad Pontificia Universidad
Católica Del Perú.
Sánchez Mercado, A. (2011). Análisis y diseño de un sistema
informatizado
para
la
Dinamización
de
los
procesos
y
procedimientos practicados en la atención médico hospitalaria
de los pacientes de oncología de un hospital público (tesis de
Grado). Universidad Pontificia Universidad Católica Del Perú.
Sánchez Carlessi H. y Reyes Meza C. (2006). Metodología y
diseños en investigación científica. Edit. Visión Universitaria.
Lima – Perú.
115
ANEXOS
MATRIZ DE CONSISTENCIA
PROBLEMAS
OBJETIVOS
¿ De que manera implementar un sistema
Implementar un sistema informático de
informático de caja y facturación para el
caja y facturación para el RECREO
RECREO FALCON?
FALCON
PROBLEMAS ESPECIFICOS
OBJETIVOS ESPECIFICOS
VARIABLES
INDICADORES
Programación funcional
Interfaz adecuada
Tiempo de atención
VARIABLE
Tiempo de búsqueda
INDEPENDIENTE
Control de accesos
Sistema informático de
Respaldo de datos(Backup)
caja y facturación.
¿Cómo implementar un Subsistema de
gestión de caja en el RECREO FALCON?
¿Cómo implementar un Subsistema de
gestión de facturacion en el RECREO
FALCON?
TIPO DE
INVESTIGACIÓN
Aplicada o
Tecnológica
Implementar un Subsistema de gestión
de caja en el RECREO FALCON
Tiempo de respuesta de
registros
VARIABLE
Implementar un Subsistema de gestión
DEPENDIENTE
de facturacion en el RECREO FALCON
Gestión del RECREO
FALCON.
116
Tiempo de respuesta de
busquedas