Está en la página 1de 223

Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

`
1

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ÍNDICE
RESUMEN:...................................................................................................................................................... 3
INFORMACIÓN DE LA EMPRESA.................................................................................................6
FUNDAMENTACIÓN.............................................................................................................................17
OBJETIVOS ................................................................................................................................................ 19
ANÁLISIS DE REQUERIMIENTOS ................................................................................................ 21
ESTUDIO DE FACTIBILIDAD........................................................................................................... 31
MATRIZ FODA ........................................................................................................................................ 46
DIAGRAMA DE GANTT ................................................................................................................... 48
DIAGRAMA DE CASOS DE USO ............................................................................................... 51
MODELO ENTIDAD RELACIÓN ................................................................................................. 53
MODELO RELACIONAL ................................................................................................................... 55
CONSULTAS SQL ................................................................................................................................. 57
DIGRAMA DE FLUJO DE DATOS (DFD) ............................................................................ 65
DIAGRAMA DE CLASES UML ...................................................................................................... 72
IDENTIFICACIÓN DE CONJUNTOS Y FUNCIONES ...................................................76
DISEÑO DE PANTALLAS ..................................................................................................................79
CÓDIGO FUENTE ................................................................................................................................ 86
MANUAL DE USUARIO ...................................................................................................................188
RED DE LA EMPRESA ..................................................................................................................... 206
CONCLUSIÓN ........................................................................................................................................211
BIBLIOGRAFÍA ....................................................................................................................................... 213
ANEXO ........................................................................................................................................................ 215
2

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

RESUMEN:
3

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Se intenta documentar de manera correcta el desarrollo y las


características del proyecto integrador, y como la empresa abordará el
mismo. Se programará un software en C# cuyo propósito será solucionar
los inconvenientes planteados por el cliente. Dicho programa permitirá una
adecuada gestión empresarial provechosa para el mismo, teniendo en
cuenta los problemas que presentó a la hora de manejar digitalmente su
empresa y avalando una solución, a su vez, la experiencia adquirida en el
transcurso del trabajo será de gran utilidad para los socios en el futuro.

Volviendo a lo anterior, nos enfocamos en los detalles que el cliente


solicitaba y pudimos solucionar varios conflictos y problemas que
surgieron, utilizamos entrevistas para entender mejor aquellas necesidades
planteadas por el cliente. Así es como hemos mejorado nuestro programa
para que rinda al máximo.

Se nos presentaron resultados esperados y 100% satisfactorios, el programa


cumple su función y soluciona los problemas planteados hasta el
momento al 100%. También consideramos problemas futuros que puedan
surgir, y tratamos de resolver el 80% en comparación con el inicio del
proyecto, se estima que al final del mismo se puede lograr el 90% o más.

A lo largo de su desarrollo surgieron varios problemas, tanto en el


programa en sí como en problemas de personal, pero después de hablar
con los participantes del proyecto pudimos llegar a diversas conclusiones
y poco a poco hemos ido resolviendo los problemas que se fueron
presentando, para llegar en la forma más rápida de llegar a una solución
de forma grupal y unificada.
4

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

We try to correctly document everything that is about to be developed in


this project, we work with the characteristics of the integrating project. The
company will program a software in C# with the purpose of solving
possible inconveniences that the client may have. It is a software that deals
with general problems, it can be used for many areas.

Going back to before, we focused on the details that the client requested
and we were able to solve various conflicts and problems that arose, we
used interviews to understand better those needs raised by the client. This
is how we have improved the performance of our program so that it
performs at its best.

Expected and 100% satisfactory results were presented to us, the program
fulfills its function and solves the problems raised up to now 100%. We also
consider future problems that may arise, and we tried to solve 80%
compared to the beginning of the project, it is estimated that by the end of
it 90% or higher can be achieved.

Throughout the course of its development, several problems arose, both in


the program itself and in personnel problems, but after speaking with the
project participants we were able to reach a conclusion and we have been
gradually solving the problems that were presented, to reach the fastest
way to a solution in a group way and in a unified way.
5

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

INFORMACIÓN DE
LA EMPRESA
6

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DESCRIPCIÓN Y PRESENTACIÓN:

NOMBRE: Ingenieros Software™

DOMICILIO: Brasil 1259, Salto, Uruguay.

TELÉFONO: +598 92 534 819

LOGO:

DESCRIPCIÓN:

La empresa está dedicada al desarrollo y distribución de software libre


ligado al ámbito de administración de empresas, las áreas de trabajo son:
la manufacturación de software y el mantenimiento del mismo. La misma
está conformada por cinco socios: Facundo Manitto, Luciano Beraza,
Santiago Esquerré, Bruno Guglielmone, Gerónimo Ramos.

FORMA JURÍDICA:

Dadas las circunstancias, los socios consideran formar una SRL la opción
más viable. Dado que esta conlleva ventajas como: una cifra de capital
necesario más pequeña y una complejidad de funcionamiento menor a
otros tipos de empresas. En adición, permite elegir una forma de
7

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

administración que brinde comodidad y la posibilidad de tomar decisiones


independientemente.

MISIÓN DE LA EMPRESA:

Proveer de software y servicios de asistencia para poder llegar a conseguir


satisfacer y solucionar las necesidades planteadas por los clientes.

VISIÓN DE LA EMPRESA:

Generar una buena impresión ante el público en general, basada en un


esquema de trabajo serio y sólido. Además de ser utilizada como impulso
para alcanzar oportunidades de trabajos más desafiantes en el futuro.
8

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

OBJETIVOS:

● Proveer servicios informáticos.

● Mejorar la eficiencia de administración general de la empresa cliente.

● Capacitar a los empleados para el cumplimiento de las necesidades del


cliente, a través del aprendizaje de nuevos lenguajes de programación y la
incorporación de tecnologías de vanguardia.

● Mantener cubiertas las necesidades planteadas por los clientes y


usuarios.
9

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

TRÁMITE ANTE INSTITUCIONES ESTATALES

BPS:

El Banco de Previsión Social un ente autónomo creado en el artículo 195 de


la Constitución de la República Oriental del Uruguay del año 1967. Su
cometido central es coordinar los servicios estatales de previsión social y
organizar la seguridad social.

DGI:

Inserta en la Administración Central y dependiendo del Ministerio de


Economía y Finanzas, la Dirección General Impositiva es la Unidad Ejecutora
encargada de la recaudación proveniente de los tributos internos y la
efectiva aplicación de las normas que los imponen.

MTSS:

En el año 1907, ante la necesidad de un organismo ministerial que tratara


los temas atinentes al trabajo y a la seguridad social, se crea (mediante la
Ley 3.147, del 12/3/1907), el Ministerio de Industria, Trabajo e Instrucción
Pública, luego de una división de lo que era el Ministerio de Fomento.

Asimismo, se establece como dependencia de esta cartera a la Oficina


Nacional del Trabajo, con cometidos de control e inspección del
cumplimiento de la normativa en la actividad desarrollada en el comercio
e industria en nuestro país.

MEF:

Le compete la conducción superior de la política nacional económica,


financiera y comercial; coordinar la política fiscal, su planificación y
efectuar la programación y el control de su ejecución, así como la
administración de los recursos públicos de acuerdo a prioridades
establecidas, promoviendo el desarrollo económico y social del país
10

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

TRÁMITES:

(Ver en Anexo)

Formulario 351: Inscripción y actualización de empresas y otras entidades


unipersonales o pluripersonales. (MEF, DGI, BPS)

Formulario 352: Actualización / Anexo de inscripción de personas físicas


vinculadas. (DGI, BPS)

Formulario 5450: Autorización para impresión de documentación. (DGI)

Planilla de Trabajo Unificada: (BPS, MTSS)

Declaración jurada de trabajadores no independientes: (BPS)


11

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FINANCIAMIENTO DEL PROYECTO:

Fuente de capital: Importe:


Proporcionado por socio: Facundo
Manitto $U 130.000

Proporcionado por socio: Santiago


Esquerré $U 130.000

Proporcionado por socio:


Luciano Beraza $U 130.000

Proporcionado por socio: Gerónimo


Ramos $U 130.000

Proporcionado por socio: Bruno


Guglielmone $U 130.000
Total:
$U650.000
(Datos extraídos Colchón Financiero
Capital requerido $U608.334 de restante:
Gastos fijos por estudio de
mes $U27.000 factibilidad) $U14.666
12

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PRESUPUESTO DEL PROYECTO:

DESCRIPCIÓN COSTO

Antel $3.000

UTE $4.500

OSE $1.500

Alquiler $18.000

Sueldos $53.120

Aportes a la seguridad social $6.705

Mantenimiento $4.000

TOTAL $90.825

Sueldo para desarrollador técnico: $40.000

Sueldo hora/hombre = 40.000/30 = $1.333/8 = $166

Horas/mes = 64h

Sueldo nominal = 64x166 = 10.624

Aportes patronales = 10.624 x 0,075 + 10.624 x 0.05 + 10.624 x

0.00125 = 1.341

Sueldos = 10.624 X 5 = 53.120


13

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ESTIMACION DE COSTOS
14

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


15 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MEZCLA COMERCIAL:

Producto: Ofrecemos servicio de desarrollo de software. Destaca por su eficiencia


y adaptación a sus objetivos.

Precio: Nuestro software está valuado en U$D 12.970, también ofrecemos un


mantenimiento mensual de U$4.000.

Plaza: Ofrecemos nuestro producto mediante varios medios:

• Página web de la empresa


• Contacto a través de redes sociales (Instagram y Twitter)

Promoción: Mediante publicidades (Carteleras, Instagram stories) y medios de


comunicación. Incluimos también publicidad digital (Anuncios).
16

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FUNDAMENTACIÓN
17

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

El local de la milanesería “La Milagrosa”, posee un programa genérico el


cual no cumple con todas las funciones deseadas por el cliente, tiene
algunos problemas a la hora de administrar la materia prima y gestionar el
inventario.

La razón principal de ser es la de desarrollar programas con todas las


funciones deseadas por los clientes y satisfacer las necesidades
planteadas por cada uno de forma completa, para mejorar la eficiencia y
el manejo de la información. Uno de los objetivos que la motivan es lograr
una sincronización de los datos con el software en dispositivos móviles
para tener un manejo completo e instantáneo.

La empresa supondrá un aumento del panorama de desarrollo de


software en la ciudad de salto y brindará visibilidad de este apartado
hacia el público en general, favoreciendo así, la estandarización y
consumo del mismo.
18

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

OBJETIVOS
19

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

OBJETIVO GENERAL:

Crear un sistema de software que permita a la empresa “La Milagrosa” una


administración eficaz y eficiente sobre la información y flujo de datos de su
empresa.

OBJETIVOS ESPECÍFICOS:

● Recaudar información sobre el entorno de la milaneseria.

● Planificar correctamente los procedimientos a realizar.

● Desarrollar el programa en el tiempo esperado y cumpliendo las


expectativas solicitadas.

● Implementar y mantener el software en la empresa.


20

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANÁLISIS DE
REQUERIMIENTOS
21

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PROPÓSITO:

Ingenieros Software™ se define en generar softwares de administración, así


como de gestión de una base de datos. El software por especificar tiene
como nombre “CommerceManager” y se trabaja con la versión 1.0.

Este software quiere proponer el alcance de una administración y manejo


de datos que supongan una comodidad al usuario. Se plantea tener
cubiertas las necesidades que pueden llegar a surgir de parte del cliente,
también se incorporan ciertas tecnologías de vanguardia para una mayor
intuición en la hora de su uso.

Este documento describe dicho software en su totalidad.

ALCANCE DEL PRODUCTO / SOFTWARE

Se pretende que el software sea de uso intuitivo, de tal manera que los
usuarios no encuentren mayores obstáculos en el manejo del mismo y
logren adquirir de manera rápida el conocimiento necesario para su
correcta ejecución.

Por eso incluimos:

● Crear un sistema de software que permita a “La Milagrosa” una


administración eficaz y eficiente sobre la información y flujo de datos en la
empresa.

● El producto brinda facilidades en la organización de la biblioteca, así


como mejora el manejo del entorno monetario y a su vez, una
administración adecuada del almacén e inventario.

● La meta a la que se trata de llegar por parte del software es proveer


servicios de asistencia y de organización para poder satisfacer las
necesidades y solucionar problemas que surjan.
22

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REFERENCIAS

En este link poseemos información necesaria para continuar con una


correcta elaboración del proyecto conforme vayamos avanzando en su
desarrollo.

EDUSALTO

En este link encontramos información para complementar lo aprendido


anteriormente y profundizar el conocimiento en algunas instancias para
asegurar una correcta realización de cada una de las premisas.

YOUTUBE
23

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FUNCIONALIDADES DEL PRODUCTO

Mantiene un registro de la biblioteca digital de la empresa, gestiona


ingresos y egresos de la empresa (incluyendo sueldos, gastos en materia
prima, etc.) A su vez gestiona la información de los clientes tanto
información general referente a nombre, domicilio, teléfono, etc; así como
también información sobre deudas y pagos. También muestra estadísticas
relativas a gastos, ventas y la posibilidad de visualizar una gráfica
comparativa mensual de los datos previamente mencionados.

CLASES Y CARACTERÍSTICAS DE USUARIOS

Fue creado para emprendedores que procuran llevar a cabo una gestión
global de su empresa de forma digital y no cumplan con los
requerimientos de un usuario avanzado.

El programa posee funcionalidades que pueden ser de utilidad para este


tipo de usuario promedio, como, por ejemplo: gestión de biblioteca,
productos, materia prima, análisis de datos mensuales y manejo de
ingresos/egresos.

ENTORNO OPERATIVO

El software funciona en dispositivos únicamente con sistema operativo


Windows XP en adelante. La arquitectura del hardware debe ser x86.
24

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REQUERIMIENTOS FUNCIONALES

Registro/Ingreso de usuario

Versión: 1.1

El usuario se debe registrar/ingresar al programa, esto es una medida de


seguridad y organización.

Prioridad: nivel alto.

El usuario ingresa su nombre, cédula y contraseña en los cuadros de texto


para así verificar su identidad y así proporcionarles el acceso a los datos
de su pertenencia.

Credenciales: Para ingresar/registrarse necesita saber sus credenciales


para el acceso, en caso de que el usuario ingrese credenciales inválidas el
programa no permitirá el ingreso.

En caso de que se presente algún error al registrar o ingresar, aparecerá un


mensaje de error solicitando al usuario que se comunique con los
desarrolladores.

Gestionar inventario

Versión: 1.2

Mantener un registro de los productos que hay a disposición


divididos en secciones teniendo en cuenta su uso.
Prioridad: nivel alto.

El usuario ingresa los datos de su inventario actual y el


programa almacena esos datos brindando así la posibilidad de
modificarlo posteriormente a partir de nuevas ventas e ingresos.

Ingreso de datos: Debe permitir el ingreso de productos y la baja


de los mismos en el cuadro de texto correspondiente.

Disponibilidad y uso: Debe mostrar los productos en stock


actuales y los que se van utilizando.
25

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Recolección y comparación: El programa debe recolectar los


datos actuales de las ventas y restar los productos vendidos de
los productos en stock y hacer un promedio de egreso
económico y cantidad de productos utilizada para conocer así
el nivel de producción.

En caso de falla, el programa no seguirá la orden enviada por el


usuario, indicará el error de una forma comprensible para el
usuario y pedirá que se intente nuevamente el ingreso de datos.
Si la falla persiste el programa notificará que el usuario se
contacte con los desarrolladores.

Gestionar ventas

Versión: 1.3

Funcionalidad: Mantiene un registro de las ventas y su evolución con el


paso del tiempo evaluando datos financieros y de producción.

Prioridad: nivel alto.

Cada venta realizada será guardada en la base de datos del programa


para permitir después una manipulación de los datos.

Ingreso de datos: Debe permitir ingresar los datos de la venta de forma


automática según datos pre ingresados, extraídos de la base de datos, o
de manera manual.

Facturación: Se debe emitir un informe con todos los datos de la venta


realizada.

En caso de falla, el programa no seguirá la orden enviada por el usuario,


indicará el error de una forma comprensible para el usuario y pedirá que
se intente nuevamente el ingreso de datos. Si la falla persiste el programa
notificará que el usuario se contacte con los desarrolladores.
26

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

En caso de emitir error en la facturación, ésta no procederá a la impresión


y mostrará al usuario un mensaje de error solicitando un nuevo intento. Si
el error aún persiste el software solicitará asistencia de los desarrolladores.

Gestionar gastos

Versión: 1.4.

Permite ingresar los gastos realizados por la empresa permitiendo


clasificarlos según su tipo.

Prioridad: nivel alto.

Cada gasto realizado será guardado en la base de datos del programa


para permitir después una manipulación de los datos.

Gastos fijos: El usuario puede ingresar gastos fijos que se aplicarán


automáticamente de forma periódica a elección del usuario.

Ingreso de datos: Permite el ingreso manual de datos.

En caso de falla, el programa no seguirá la orden enviada por el usuario,


indicará el error de una forma comprensible para el usuario y pedirá que
se intente nuevamente el ingreso de datos. Si la falla persiste el programa
notificará que el usuario se contacte con los desarrolladores.

Emisión de informes

Versión: 1.5.

Recolecta los datos ingresados en otras funcionalidades y genera informes


para cada una de ellas, así como gráficas de evolución en intervalos de
tiempo a elección.

Prioridad: nivel alto.

Esta función reunirá los datos necesarios de la base de datos del


programa para generar así los informes deseados.

Recolección de datos: La funcionalidad tiene acceso a la base de datos


para recolectar así los mismos de forma automática.

Análisis estadístico: El software proporcionará una gráfica con los datos


27

que desea el usuario.


SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE
Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Informes escritos: Se producirá un informe especificando los datos que el


usuario desee.

En caso de fallo, como por ejemplo que no aparezcan las gráficas o se


tomen datos inválidos, aparecerá un error especificando al usuario que se
contacte con los desarrolladores.

Reglas de negocio

Se conoce que el programa va a ser manejado únicamente por los dueños


de la empresa, por eso se implementó el sistema de registro/ingreso con
los permisos especificados para cada usuario.

La empresa implementa distintos sistemas de pago los cuales son


gestionados por el programa. Ej.: MercadoPago, créditos de proveedor,
efectivo y tarjetas.

Los volúmenes de ventas, gastos y/o inventario no se ven comprometidos


ni por las reglas de la empresa, ni las capacidades del software.

REQUERIMIENTOS DE INTERFACES EXTERNAS

Interfaces de usuario

Para el desarrollo de interfaz de usuario se siguieron estos estándares:

Factores de desarrollo: Estos ayudan a mejorar la comunicación visual


respecto al sistema operativo o página web. Esto incluye kits de
herramientas y librerías de componentes, soportes para un rápido
prototipado, y adaptabilidad. Estos factores están ligados a la fase inicial
del proceso de diseño de una interfaz gráfica.

Factores de viabilidad: Estos estándares para el diseño de interfaces


gráficas tienen en cuenta factores humanos y expresan una fuerte
identidad visual. Esto incluye: habilidades humanas, la identidad del
producto, un claro modelo conceptual, y múltiples representaciones. Se
basan en que tan impactante consideran que resultará el resultado final
del interfaz.
28

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Factores de aceptación: Según los estándares para el diseño de interfaces


gráficas, en los factores de aceptación están la política de la corporación,
los mercados internacionales, y la documentación y entrenamiento. Esto
está ampliamente ligado a que tanto las personas y los mercados van a
sentirse atraídos por el interfaz elaborado.

Interfaces de hardware

En cuanto a las interfaces con hardware necesarias en nuestro software


debemos mencionar una interfaz con el lector de códigos de barras y otra
interfaz con la impresora del local para la emisión de recibos con los
detalles de los cobros efectuados, así como la impresión de la constancia
de pago en el caso que se haya efectuado el mismo.

Interfaces de software

Poseemos interacciones con aplicaciones de bases de datos como, por


ejemplo: MySQL. También utilizamos herramientas y a su vez librerías.
Manejamos componentes de software comercial, promoviendo que no se
puede distribuir sin permiso de los creadores.

Interfaces de comunicación

Utilizamos protocolos de comunicación de red, en este caso optamos por


TCP/IP.

Entre los estándares de comunicación disponibles, decidimos utilizar HTTP y


FTP.

Hay requerimientos de encriptación los cuales están destinados a permitir


únicamente el ingreso al dueño y/o operador del software, para así brindar
una mayor seguridad.
29

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REQUERIMIENTOS NO FUNCIONALES

Toda funcionalidad del sistema y transacción de negocio debe responder


al usuario en menos de 5 segundos.

Los datos modificados en la base de datos deben ser actualizados para


todos los usuarios que accedan en menos de 2 segundos.

Los permisos de acceso al sistema podrán ser cambiados solamente por


el administrador de acceso de datos.

El tiempo de aprendizaje del sistema por un usuario deberá ser menor a 4


horas.

El sistema debe poseer interfaces gráficas bien formadas.

OTROS REQUERIMIENTOS

Tener en cuenta la posible actualización a nuevos métodos de pago y


nuevas monedas.

Evitar plagios implementando marcas de agua dentro del software.

Siempre estar dispuestos a posibles actualizaciones del software cómo


mejoras o nuevas implementaciones.

Plantear la posible reutilización de componentes de software para futuros


proyectos.
30

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ESTUDIO DE
FACTIBILIDAD
31

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FACTIBILIDAD OPERATIVA:

En este proyecto podrán observar algunos beneficios a destacar los cuales


nos facilita mucho nuestra área de trabajo:

● Mejoras en la eficiencia del área bajo estudio


● Personal acotado
● Reducción de futuras inversiones
● Disponibilidad del recurso humano
● Mejoras en planeación, control y uso de recursos
● Suministro oportuno de insumos para las operaciones
● Toma acertada y rápida de decisiones
● Disponibilidad de información apropiada

RECURSOS HUMANOS:

Desarrolladores:

● Luciano Beraza
● Bruno Guglielmone
● Santiago Esquerré
● Facundo Manitto
● Gerónimo Ramos

Clientes:

● Andrés Argain
● Agustina Legnazzi
32

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FACTIBILIDAD TÉCNICA:

PC1: Ordenador personalizado:


● Procesador: Intel Core i5-12400F
● Motherboard: Asus PRIME B660-PLUS D4
● Memoria RAM: Corsair Vengeance LPX (2x8GB) DDR4-3200 CL16
● Almacenamiento: SSD Western Digital Blue 500GB M.2 NVME
● Tarjeta de video: Asus GeForce GTX 1650 G5 4GB DUAL OC
● Gabinete: Phanteks Eclipse P360A ATX
● Fuente: EVGA 100-GD-0600-V1 600W 80+ GOLD

● Monitor: Acer V6 V226HQL led 21.5"


● Kit de teclado y mouse inalámbrico Logitech MK345

PC2: Ordenador personalizado:


● Procesador: Intel Core i5-12400F
● Motherboard: Asus PRIME B660-PLUS D4
● Memoria RAM: Corsair Vengeance LPX (2x8GB) DDR4-3200 CL16
● Almacenamiento: SSD Western Digital Blue 500GB M.2 NVME
● Tarjeta de video: Asus GeForce GTX 1650 G5 4GB DUAL OC
● Gabinete: Phanteks Eclipse P360A ATX
● Fuente: EVGA 100-GD-0600-V1 600W 80+ GOLD

● Monitor: Acer V6 V226HQL led 21.5"


● Kit de teclado y mouse inalámbrico Logitech MK345

PC3: Ordenador personalizado:


● Procesador: AMD Ryzen 5 5600G
● Motherboard: MSI B550M PRO-VDH WIFI Micro ATX AM4
● Memoria RAM: Corsair Vengeance LPX (2x8 GB) DDR4-3200 CL16
● Almacenamiento: SSD Silicon Power 1TB M.2 NVME
● Gabiente: Silverstone PS15 MicroATX
● Fuente: EVGA 100-BR-0500-K1 500W 80+ Bronze

● Monitor: Acer V6 V226HQL led 21.5"


● Kit de teclado y mouse inalámbrico Logitech MK345
33

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PC4: Ordenador personalizado:


● Procesador: AMD Ryzen 5 5600G
● Motherboard: MSI B550M PRO-VDH WIFI Micro ATX AM4
● Memoria RAM: Corsair Vengeance LPX (2x8 GB) DDR4-3200 CL16
● Almacenamiento: SSD Silicon Power 1TB M.2 NVME
● Gabinete: Silverstone PS15 MicroATX
● Fuente: EVGA 100-BR-0500-K1 500W 80+ Bronze

● Monitor: Acer V6 V226HQL led 21.5"


● Kit de teclado y mouse inalámbrico Logitech MK345

PC5: Ordenador personalizado:


● Procesador: Intel Core i3-10100
● Motherboard: Gigabyte B560M DS3H AC Micro ATX LGA1200
● Memoria RAM: Corsair Vengeance LPX (8 GB) DDR4-2400 CL16
● Almacenamiento: SSD Kingston NV1 500GB M.2 NVME
● Gabinete: Corsair 350D MicroATX
● Fuente: Thermaltake Smart Series 430W ATX 12V V2.3 80+
● Kit de teclado y mouse inalámbrico Logitech MK345

Servidor FTP:
● Rack de pared pivotante de 12U OpenSky
● Patchera De 24 Puertos Cat6e NRG+
● Organizador de Cables NEXXT de 1U
● Switch TP-LINK TL-SG1024D
● Router TP-Link TL-R480T+
● Servidor Dell PowerEdge R420 8x 1U
o Procesador: 2x Xeon E5-2403 1.80 GHz
o Memoria RAM: 32GB (4x8GB) DDR3
o Controlador de Almacenamiento: Dell PERC H310 6Gbps
SAS/SATA Mini Mono RAID
o Almacenamiento: 2x 1TB 2.5” 7200rpm 6Gbps SATA
● Monitor: Acer V6 V226HQL led 21.5"
● Kit de teclado y mouse inalámbrico Logitech MK345
● PDU Rackeable 1U ProLink PL006
34

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Descripci URL Imagen


ón
PC1 x2 https://pcpartpicker.com/list/XVbQfv

PC3 x3 https://pcpartpicker.com/list/7mRyV
w

PC5 https://pcpartpicker.com/list/QDTqhk

Kit teclado y https://www.mercadolibre.com.uy/kit


mouse x7 -de-teclado-y-mouse-inalambrico-
logitech-mk345-espanol-
latinoamerica-de-color-
negro/p/MLU18610874?matt_too
35

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Monitor x7 https://www.mercadolibre.com.uy/m
onitor-acer-v6-v226hql-led-215-
negro-
100v240v/p/MLU7568845?pdp_filters
=category:MLU1648#searchVariation
=MLU7568845&position=1&search_la
yout=stack&type=product&tracking_
id=75419791-ceb4-4a9a-a508-
cd610a70899c

Bobina Utp https://articulo.mercadolibre.com.uy/


Cat 6 305m MLU-477881036-cable-utp-cat-6-
interior-305-metros-_JM

Rack https://tienda.opensky.com.uy/Rack-
de-pared-pivotante-de-12U-
600x600-p467472557

Patchera 24 https://articulo.mercadolibre.com.uy/
puertos MLU-611398443-patchera-de-24-
puertos-cat6e-montable-racks-
organiza-cables-
_JM#position=1&search_layout=stac
k&type=item&tracking_id=bf65c5b3-
0ffd-4869-8eb6-7e36fe44d57c

Switch https://articulo.mercadolibre.com.uy/
(Rackeable) MLU-463259656-switch-tp-link-tl-
24 puertos sg1024d-24-puertos-gigabit-
rackeable-
36

_JM#position=18&search_layout=sta
SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE
Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ck&type=item&tracking_id=9bc0321f
-3df3-4a75-8119-033796d8dcfd

Router https://www.mercadolibre.com.uy/ro
uter-tp-link-tl-r480t-negro-
100v240v/p/MLU7868093#searchVari
ation=MLU7868093&position=1&searc
h_layout=stack&type=product&track
ing_id=b6011f8d-306f-49de-9fd5-
e58a782b62ba

Servidor https://www.theserverstore.com/dell-
poweredge-r420-8x-1u-sff-
server.html

PDU zapatilla https://articulo.mercadolibre.com.uy/


(Rackeable) MLU-448517200-zapatilla-rackeable-
pdu-1u-pronet-tecnologia-
_JM#position=1&search_layout=stac
k&type=item&tracking_id=cab4ecca
-af66-4017-862d-0f5dc6ef4521

Licencia https://www.microsoft.com/es-
Windows 10 es/d/windows-10-
Pro pro/df77x4d43rkt?activetab=pivot:inf
ormacióngeneraltab

Licencia https://www.office.com
Office 365
37

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Modem Antel https://www.antel.com.uy/personas-


y-hogares/novedades/plan-
recambio-de-routers

Impresora https://www.mercadolibre.com.uy/im
Epson presora-a-color-multifuncion-
Expression epson-expression-xp-2101-con-wifi-
XP-21-01 negra-100v240v/p/MLU17748647?m

Licencia https://www.ganttproject.biz
GantProject

Organizador https://articulo.mercadolibre.com.uy/
de Cables MLU-603442864-organizador-de-
cables-horizontal-plastico-prack-1u-
19-_JM?m

Fichas rj45 x https://articulo.mercadolibre.com.uy/


100 MLU-473199478-conectores-rj45-x-6-
unidades-_JM?m

Rosetas https://articulo.mercadolibre.com.uy/
Modelo MLU-609995499-caja-doble-de-red-
Doble x6 roseta-para-rj-45-_JM?matt_t
38

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Cámara x4 https://articulo.mercadolibre.com.uy/
MLU-465420666-camara-exterior-
wifi-ip-full-hd-color-dia-y-noche-
_JM#position=19&search_layout=sta
ck&type=item&tracking_id=ba64919
d-1adb-4beb-877f-fd8dfa1973b5

Laptop x5 https://articulo.mercadolibre.com.uy/
MLU-600021076-notebook-hp-
gaming-pavilion-ryzen-5-8gb-
256gb-156-1050-3gb-
_JM?searchVariation=173545027681#
searchVariation=173545027681&positi
on=3&search_layout=stack&type=ite
m&tracking_id=d4a4265b-1bf2-
48dd-9846-36f91dd8dec5

Celular https://www.mercadolibre.com.uy/ip
Iphone 8 hone-8-64-gb-gris-
espacial/p/MLU8752432?pdp_filters=
category:MLU1055#searchVariation=
MLU8752432&position=1&search_layo
ut=stack&type=product&tracking_id
=bb1b7c86-3f17-4efc-87b9-
13fc17c09407
39

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Celular https://www.mercadolibre.com.uy/ap
Iphone XR ple-iphone-xr-128-gb-
blanco/p/MLU12866684?product_trig
ger_id=MLU12866686&pdp_filters=ca
tegory%3AMLU1055&applied_product
_filters=MLU12866686&quantity=1

Celular https://www.mercadolibre.com.uy/xia
Xiaomi omi-redmi-note-10-pro-global-dual-
Redmi Note sim-128-gb-bronce-gradiente-6-gb-
10 ram/p/MLU17953706?pdp_filters=cat
egory:MLU1055#searchVariation=MLU
17953706&position=1&search_layout=
stack&type=product&tracking_id=59
dae77e-c92f-4174-b2d6-
7b6d2a8e92d4

Xiaomi Poco https://www.mercadolibre.com.uy/xia


x3 omi-pocophone-poco-x3-dual-sim-
64-gb-two-shades-of-black-6-gb-
ram/p/MLU16367995?pdp_filters=cat
egory:MLU1055#searchVariation=MLU
16367995&position=2&search_layout
=stack&type=product&tracking_id=b
f5318bc-c293-4d27-9f59-
51fcac212367
40

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Samsung https://servicom.com.uy/tienda/celul
A20S ares/samsung-galaxy-a20s-32gb/

Access Point https://www.mercadolibre.com.uy/ro


uter-access-point-tp-link-archer-
ax50-v1-negro-
220v/p/MLU15388285?pdp_filters=ite
m_id:MLU478995378#searchVariatio
n=MLU15388285&position=1&search_l
ayout=stack&type=pad&tracking_id
=a150002c-d437-4f88-92bf-
16d8f297f442
41

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FACTIBILIDAD ECONÓMICA

DESCRIPCIÓN COSTO

PC1 $45.513

Impresora $5.200

PC2 $45.513

PC3 $37.140

PC4 $37.140

PC5 $25.472

Servidor FTP $44.096

Licencia Windows 10 Pro $1.047

Licencia Office 365 $3.400

Licencia GanttProject $205

Kit Teclado y Mouse x7 $10.878

Cable Utp cat 6 $3.950

Monitor x7 $50.225

Rack $9.718

Patchera 24 puerto $1.677

Router $2.752
42

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Switch $5.074

Zapatilla PDU $2.150

Organizador de Cables $310

Fichas rj45 x100 $2.000

Rosetas Modelo Doble x6 $1.080

Laptop x5 $178.500

Celular iPhone 8 $10.878

Celular iPhone XR $23.898

Celular Xiaomi Redmi Note 10 $14.070

Celular Xiaomi POCO X3 NFC $17.682

Celular Samsung Galaxy A20S $10.790

Cámara IP x4 $12.600

Access Point $5.376

TOTAL $608.334
43

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

GASTOS FIJOS POR MES

DESCRIPCIÓN COSTO

Antel $3.000

UTE $4.500

OSE $1.500

Alquiler $18.000

TOTAL $27.000
44

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FACTIBILIDAD LEGAL

En conformidad con la Ley N.º 18.331 del 11 de agosto de 2008, de Protección


de Datos Personales y Acción de Habeas Data. Los datos que sean
suministrados y tratados conforme con la garantía (Artículos 11 y 12) y los
requisitos de consentimiento (Artículo 9, Literal D) que otorga dicha ley. La
información que se incorpora será guardada en la base de datos de
“Software de Administración para Milaneseria: Ingenieros Commerce
Manager.”, la cual sería procesada exclusivamente para los fines de
gestionar las funciones que se procesan dentro de la empresa de venta de
milanesas sin posibilidad de identificar a alguna persona en particular. Los
datos personales que sean tratados, serán protegidos con su debida
protección, se tomarán las medidas necesarias para evitar su alteración,
pérdida, tratamiento o acceso no autorizado por parte de terceros.

Los responsables de la base de datos son los integrantes del grupo


“Ingenieros Software™”, la dirección donde se podrá ejercer los derechos
de acceso, rectificación, actualización, inclusión o suspensión, es Salto,
Salto, Julio Herrera y Obes 847.
Correo Electrónico: “ingenierossoftwaretm@gmail.com”.

Las contraseñas de todos los usuarios son encriptadas para cumplir con el
artículo 1 de la ley 18.331. Se utilizará el algoritmo de encriptación “sha2”
para que la seguridad proporcionada sea mayor y eficaz en caso de que
un acceso no autorizado intente ingresar. Se manejará el artículo 5 para
que la base de datos sea adecuada a la misma.

Todo tercero que llegue a poseer información almacenada en la base de


datos tiene el derecho a acceder a los datos referidos a esta persona, la
finalidad de estos y los usos de dichos datos que estén dentro de la base
de datos. Estos podrían ser eliminados por el administrador o por los
desarrolladores de la base de datos si es deseado, después de haberlo
hablado por el mail de ingenierossoftwaretm@gmail.com siguiendo el
capítulo XIII.

Se adjunta el enlace a la Ley N.º 18.331:


https://www.agesic.gub.uy/innovaportal/v/302/1/agesic/ley-n%C2%B0-
18331-de-11-deagosto-de-2008.html
45

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MATRIZ FODA
46

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Estrategias:

• Para solucionar la poca experiencia laboral, debemos iniciar con


proyectos menores.
• En los inicios se pedirá un capital inicial a los socios. *Se contratará o
pedirá asesoramiento al comienzo a un Administrador.
• Para lidiar con la competencia, debemos ser innovadores y estar a la
vanguardia en tecnologías y conocimientos.
• Para establecernos como empresa, debemos estar en constante
crecimiento y expandirnos para así alcanzar una mayor clientela.
• Nuestros productos serán entregados encriptados.
47

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DIAGRAMA DE
GANTT
48

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


49 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


50 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DIAGRAMA DE
CASOS DE USO
51

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


52 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MODELO ENTIDAD
RELACIÓN
53

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


54 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MODELO
RELACIONAL
55

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PASAJE A TABLAS:

N y S = Clave Foránea, S = Clave Primaria.


Usuario (ID. Usuario, Username, Contraseña, Denominación, RUT, Dirección,
Teléfono, Foto)

Cliente (ID.CLI, IdUsuario, Dirección, Nombre, Teléfono, Saldo)

Venta (IdVenta, IDUsuario, IDCliente, TipoDocumento, Fecha, Importe, Envío,


Cambio)

Producto_Venta (ID. Prod, IDUsuario, Stock, descripción, PrecioUnitario,


CostoUnitario)

Materia_Prima (ID. Mat, IDUsuario, Costo, Descripción, Stock)

Gasto (ID. Gas, IDUsuario, Valor, Concepto, Fecha, Tipo)

DetalleVenta (IdDetalleVenta, IdVenta, IdProd, PrecioVenta, Cantidad, SubTotal)

Elaboración (Id Elaboración, IDMatPrim, Fecha, Cantidad)


56

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CONSULTAS SQL
57

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CREACIÓN DE BASE DE DATOS


CREATE TABLE `cliente` (
`ID.CLI` int(11) NOT NULL AUTO_INCREMENT,
`IdUsuario` int(11) NOT NULL,
`Nombre` varchar(200) NOT NULL,
`Direccion` varchar(200) NOT NULL,
`Telefono` varchar(200) NOT NULL,
`Saldo` float NOT NULL,
PRIMARY KEY (`ID.CLI`),
KEY `IdUsuario` (`IdUsuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

CREATE TABLE `detalleventa` (


`IdDetalleVenta` int(11) NOT NULL AUTO_INCREMENT,
`IdVenta` int(11) NOT NULL,
`IdProd` int(11) NOT NULL,
`PrecioVenta` float NOT NULL,
`Cantidad` float NOT NULL,
`SubTotal` float NOT NULL,
PRIMARY KEY (`IdDetalleVenta`),
KEY `IdVenta` (`IdVenta`),
KEY `IdProd` (`IdProd`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

CREATE TABLE `elaboracion` (


`IdElaboracion` int(11) NOT NULL AUTO_INCREMENT,
`IdMatPrim` int(11) NOT NULL,
`Fecha` date NOT NULL,
`Cantidad` float NOT NULL,
PRIMARY KEY (`IdElaboracion`),
KEY `IdMatPrim` (`IdMatPrim`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

CREATE TABLE `gasto` (


`IdGasto` int(11) NOT NULL AUTO_INCREMENT,
`IdUsuario` int(11) NOT NULL,
`Valor` float NOT NULL,
`Concepto` varchar(100) NOT NULL,
`Fecha` date NOT NULL,
`Tipo` varchar(50) NOT NULL,
PRIMARY KEY (`IdGasto`),
KEY `IdUsuario` (`IdUsuario`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
58

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CREATE TABLE `materia_prima` (


`ID.Mat` int(11) NOT NULL AUTO_INCREMENT,
`IdUsuario` int(11) NOT NULL,
`Costo` float NOT NULL,
`Descripcion` varchar(200) NOT NULL,
`Stock` float NOT NULL,
PRIMARY KEY (`ID.Mat`),
KEY `IdUsuario` (`IdUsuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

CREATE TABLE `producto_venta` (


`ID.Prod` int(11) NOT NULL AUTO_INCREMENT,
`IdUsuario` int(11) NOT NULL,
`Stock` float NOT NULL,
`Descripcion` varchar(200) NOT NULL,
`PrecioUnitario` float NOT NULL,
`CostoUnitario` float NOT NULL DEFAULT '0',
PRIMARY KEY (`ID.Prod`),
KEY `IdUsuario` (`IdUsuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

CREATE TABLE `usuario` (


`ID.Usuario` int(11) NOT NULL AUTO_INCREMENT,
`Username` varchar(200) NOT NULL,
`Contraseña` blob NOT NULL,
`Denominacion` varchar(50) DEFAULT NULL,
`RUT` varchar(12) DEFAULT NULL,
`Direccion` varchar(50) DEFAULT NULL,
`Telefono` varchar(50) DEFAULT NULL,
`Foto` longblob,
PRIMARY KEY (`ID.Usuario`),
UNIQUE KEY `Username` (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

CREATE TABLE `venta` (


`IdVenta` int(11) NOT NULL AUTO_INCREMENT,
`IDUsuario` int(11) NOT NULL,
`IDCliente` int(11) DEFAULT NULL,
`TipoDocumento` varchar(50) NOT NULL,
`Fecha` date NOT NULL,
`Importe` float NOT NULL,
`Envio` tinyint(1) NOT NULL,
`Cambio` float DEFAULT NULL,
PRIMARY KEY (`IdVenta`),
KEY `ID.Usuario` (`IDUsuario`) USING BTREE,
59

KEY `ID.CLI` (`IDCliente`) USING BTREE


) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4
SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE
Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PRINCIPALES CONSULTAS DEL PROGRAMA:


--MUESTRA LA GANANCIA GENERADA POR CADA PRODUCTO
select p.Descripcion, (sum(dv.Subtotal)-(p.CostoUnitario*sum(dv.Cantidad)))
from `detalleventa` dv
inner join `producto_venta` p on p.`ID.Prod` = dv.`IdProd`
inner join `venta` v on v.`IdVenta` = dv.`IdVenta`
where p.`IdUsuario` = @IdUsuario AND
v.Fecha between @fromDate and @toDate
group by p.Descripcion
order by 2 desc;

--MUESTRA LOS 5 PRODUCTOS MÁS VENDIDOS


select p.Descripcion, sum(dv.Cantidad) Cantidad
from `detalleventa` dv
inner join `producto_venta` p on p.`ID.Prod` = dv.`IdProd`
inner join `venta` v on v.`IdVenta` = dv.`IdVenta`
where p.`IdUsuario` = @IdUsuario AND
v.Fecha between @fromDate and @toDate
group by p.Descripcion
order by 2 desc
LIMIT 5;

--MUESTRA TODAS LAS VENTAS, TENGAN UN CLIENTE ASOCIADO O NO


SELECT `IdVenta`, `ID.CLI`, `Nombre` Cliente, TipoDocumento,
CAST(DATE_FORMAT(Fecha, '%e/%c/%Y') as char) Fecha, Importe, IF(`Envio`=1, 'A
domicilio', 'Venta en local') Envio
FROM `venta` left join `cliente` on `venta`.`IDCliente` = `cliente`.`ID.CLI`
WHERE `venta`.`IDUsuario` = @IdUsuario ORDER BY IdVenta DESC;
--MUESTRA TODAS LAS FILAS DE DETALLEVENTA PARA UNA VENTA EN ESPECIFICO
SELECT `Descripcion` Producto, `PrecioVenta` Precio, `Cantidad`, `SubTotal`
FROM `detalleventa`, `producto_venta`
WHERE `detalleventa`.`IdProd` = `producto_venta`.`ID.Prod` AND `IdVenta` =
@IdVenta;

--INSERTA LOS VALORES DE UNA NUEVA VENTA


INSERT INTO venta(`IDUsuario`, `IDCliente`, `TipoDocumento`, `Fecha`,
`Importe`, `Envio`, `Cambio`)
VALUES (@IdUsuario, @IdCliente, @TipoDocumento, STR_TO_DATE(@Fecha,
'%e/%c/%Y'), @Importe, @Envio, @Cambio);

--OBTIENE EL TOTAL DE VENTAS EN UN INTERVALO DE TIEMPO


SELECT COUNT(`IdVenta`) FROM `venta` WHERE `IdUsuario` = @IdUsuario AND Fecha
BETWEEN @fromDate AND @toDate;

--OBTIENE LA SUMA DE TODOS LOS GASTOS EN UN INTERVALO DE TIEMPO


SELECT Fecha, SUM(Valor) Total FROM `gasto` WHERE `IdUsuario` = @IdUsuario AND
60

Fecha BETWEEN @fromDate AND @toDate GROUP BY Fecha;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

--VERIFICA SI LA CONTRASEÑA ACTUAL CORRESPONDE CON LA QUE EL USUARIO INGRESA


SELECT Contraseña from Usuario WHERE AES_DECRYPT(Contraseña, @key) = @Passwd
AND `ID.Usuario` = @UserID;

--HACE EL LOGIN
SELECT Username, Contraseña FROM usuario WHERE BINARY Username = @Username AND
AES_DECRYPT(Contraseña, @key) = @Passwd ;

--REGISTRA UN NUEVO USUARIO


INSERT INTO usuario (Username, Contraseña) VALUES (@Username,
AES_ENCRYPT(@Passwd, @key));
61

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

IMPORTACIÓN/EXPORTACIÓN DE LA BASE DE DATOS


Exportación a través de comandos (Linux):

mysqldump –u root –p proyecto > proyecto.sql

El comando anterior creará un script sql para la creación de la base de datos

importada en el directorio actual.

Importación a través de comandos (Linux):

mysql –u root –p

CREATE DATABASE proyecto;

Debemos crear una nueva base de datos con el mismo nombre, para posibilitar

la acción de importarla.

mysqldump –u root –p proyecto < proyecto.sql

Realizamos el proceso inverso a la exportación, asegurándonos de tener el script

en el directorio actual.
62

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Importación y exportación en Windows:

Se utilizo la herramienta phpMyAdmin para realizar este proceso de una forma

sencilla.
63

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CREACIÓN DE USUARIOS CON PRIVILEGIOS


CREATE USER 'admin'@'localhost ' IDENTIFIED BY 'admin';
CREATE USER 'dueño'@'localhost' IDENTIFIED BY 'dueño';
CREATE USER 'funcionario'@'localhost' IDENTIFIED BY 'funcionario';

GRANT ALL PRIVILEGES ON * TO 'admin'@'localhost';


GRANT UPDATE, SELECT, INSERT ON * TO 'dueño'@'localhost';
GRANT DELETE ON gasto TO 'dueño'@'localhost';
GRANT DELETE ON venta TO 'dueño'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'funcionario'@'localhost';
64

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DIGRAMA DE
FLUJO DE DATOS
(DFD)
65

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


66 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


67 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


68 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


69 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


70 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


71 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DIAGRAMA DE
CLASES UML
72

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


73 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


74 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


75 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

IDENTIFICACIÓN
DE CONJUNTOS Y
FUNCIONES
76

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Función

Ventas Tipo

Venta
1

En
local
Venta
2

Venta Envío

Función
Tipo de documento
Venta probatorio
s

Venta 1

Venta 2 E-Factura
Contado
Venta 3
E-Factura
Venta 4 Crédito

E-Ticket
Venta 5 Contado

E-Ticket
Venta 6
Crédito
77

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Conjunto

Venta Producto
s s

Venta 1
Producto 1

Ventas 2 Producto 2

Ventas 3 Producto 3

Ventas 4 Producto 4

Conjunto
Materia prima Producto

Pollo
Milanesa de pollo

Pan rallado
Milanesa de carne

Jamon y queso

Condimentos Milanesa
de
jamon y
Carne
queso
78

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DISEÑO DE
PANTALLAS
79

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


80 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


81 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


82 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


83 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


84 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


85 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CÓDIGO FUENTE
86

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CONEXIONSQL.CS
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using MySql.Data;
using Ingenieros_Commerce_Manager_v2._0.Entities;
using Google.Protobuf.WellKnownTypes;
using System.Windows.Documents;
using System.IO;
using System.Windows;

namespace Ingenieros_Commerce_Manager_v2._0
{
public class conexionsql
{
#region MySQLResources
private readonly MySqlConnection conexion = new
MySqlConnection("Server=localhost; Database=proyecto; Uid=usuario;
Pwd=user;");
private MySqlCommand comandos = new MySqlCommand();
public MySqlDataReader datos;
protected MySqlDataAdapter adapter;
#endregion

#region DataTables
DataTable DTProd = new DataTable();
DataTable DTMatPrim = new DataTable();
DataTable UserData = new DataTable();
DataTable DTClientes = new DataTable();
DataTable DTGastos = new DataTable();
DataTable DTVentas = new DataTable();
DataTable InfoVentas = new DataTable();
#endregion

#region Ventas
public void RestarStock(int id, string cantidad)
{
AbrirConexion();
comandos.CommandText = "update `producto_venta` set Stock = Stock
- '"+cantidad+"' where `ID.Prod` = '"+id+"' ;";
comandos.ExecuteNonQuery();
87

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

public void SumarStock(int id, string cantidad)


{
AbrirConexion();
comandos.CommandText = "update `producto_venta` set Stock = Stock
+ '" + cantidad + "' where `ID.Prod` = '" + id + "' ;";
comandos.ExecuteNonQuery();

}
public DataTable GetVentas()
{
CerrarReader();
AbrirConexion();
comandos.CommandText = @"SELECT `IdVenta`, `ID.CLI`, `Nombre`
Cliente, TipoDocumento, CAST(DATE_FORMAT(Fecha, '%e/%c/%Y') as char) Fecha,
Importe, IF(`Envio`=1, 'A domicilio', 'Venta en local') Envio
FROM `venta` left join `cliente` on
`venta`.`IDCliente` = `cliente`.`ID.CLI`
WHERE `venta`.`IDUsuario` =
'"+Usuario.Id+@"' ORDER BY IdVenta DESC;
";
EjecutarReader();
DTVentas.Rows.Clear();
DTVentas.Load(datos);
return DTVentas;
}
public DataTable GetInfoVentas(int idventa)
{
CerrarReader();
AbrirConexion();
comandos.CommandText = "SELECT `Descripcion` Producto,
`PrecioVenta` Precio, `Cantidad`, `SubTotal` FROM `detalleventa`,
`producto_venta` WHERE `detalleventa`.`IdProd` = `producto_venta`.`ID.Prod`
AND IdVenta = '"+idventa+"';";
EjecutarReader();
InfoVentas.Rows.Clear();
InfoVentas.Load(datos);
return InfoVentas;
}
public int RegistrarVenta(string TipoDocumento, string Fecha, float
Importe, bool Envio, float Cambio, DataTable detalle)
{
AbrirConexion();
CerrarReader();
try
{
comandos.Parameters.Clear();
comandos.Parameters.AddWithValue("@IdUsuario", Usuario.Id);
88

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

comandos.Parameters.AddWithValue("@TipoDocumento",
TipoDocumento);
if (Cliente.IDCLI > 0)
{
comandos.Parameters.AddWithValue("@IdCliente",
Cliente.IDCLI);
if (TipoDocumento.Contains("Crédito"))
{
comandos.CommandText = "UPDATE `cliente` SET `Saldo` =
`Saldo` + '"+Importe+"' WHERE `ID.CLI` = '"+ Cliente.IDCLI + "';";
comandos.ExecuteNonQuery();
}
}
else
{
comandos.Parameters.AddWithValue("@IdCliente",
DBNull.Value);
if (TipoDocumento.Contains("Crédito"))
{
MessageBox.Show("Debe especificar el cliente para
realizar ventas a crédito.", "Error", MessageBoxButton.OK,
MessageBoxImage.Warning);
return 0;
}
}
comandos.Parameters.AddWithValue("@Importe", Importe);
if (Envio == true)
{
comandos.Parameters.AddWithValue("@Envio", 1);
}
else
{
comandos.Parameters.AddWithValue("@Envio", 0);
}
comandos.Parameters.AddWithValue("@Cambio", Cambio);
comandos.CommandText = "insert into venta(`IDUsuario`,
`IDCliente`, `TipoDocumento`, `Fecha`, `Importe`, `Envio`, `Cambio`) values
(@IdUsuario, @IdCliente, @TipoDocumento, STR_TO_DATE('" + Fecha + "',
'%e/%c/%Y'), @Importe, @Envio, @Cambio);";
comandos.ExecuteNonQuery();
comandos.Parameters.Clear();
comandos.CommandText = "SELECT LAST_INSERT_ID();";
CerrarReader();
EjecutarReader();
datos.Read();
int idventa = datos.GetInt32(0);
CerrarReader();
89

foreach (DataRow row in detalle.Rows)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
int idprod = Convert.ToInt32(row["IDProducto"]);
float precio = float.Parse(row["PrecioVenta"].ToString());
float Cantidad = float.Parse(row["Cantidad"].ToString());
float SubTotal = float.Parse(row["SubTotal"].ToString());
comandos.CommandText = "INSERT into `detalleventa`
(`IdVenta`, `IdProd`, `PrecioVenta`, `Cantidad`, `SubTotal`) VALUES ('" +
idventa + "', '" + idprod + "', '" + precio + "', '"+Cantidad+"',
'"+SubTotal+"')";
comandos.ExecuteNonQuery();
}
CerrarConexion();
return idventa;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
return 0;
}
}

#endregion

#region Usuario
public int GetUserID(string username)
{
AbrirConexion();
comandos.CommandText = "SELECT `ID.Usuario` FROM `usuario` WHERE
Username = '"+username+"';";
EjecutarReader();
datos.Read();
Usuario.Id = datos.GetInt32("ID.Usuario");
CerrarReader();
return Usuario.Id;
}
public void SetUserData(int id)
{
AbrirConexion();
CerrarReader();
adapter = new MySqlDataAdapter("select `ID.Usuario`, `Username`,
CAST(AES_DECRYPT(`Contraseña`, '"+Usuario.key+"') AS CHAR), `Denominacion`,
`RUT`, `Direccion`, `Telefono`, `Foto` from usuario where
`usuario`.`ID.Usuario` = '" + id + "';", conexion);
adapter.Fill(UserData);
Usuario.Username = UserData.Rows[0][1].ToString();
Usuario.Password = UserData.Rows[0][2].ToString();
90

Usuario.Denominacion = UserData.Rows[0][3].ToString();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Usuario.RUT = UserData.Rows[0][4].ToString();
Usuario.Direccion = UserData.Rows[0][5].ToString();
Usuario.Telefono = UserData.Rows[0][6].ToString();
if (UserData.Rows[0][7] != DBNull.Value)
{
Usuario.Foto = (UserData.Rows[0][7]) as byte[];
}
adapter.Dispose();
}
public void SetUserImg(byte[] img, int id)
{
AbrirConexion();
string cadena = "UPDATE `usuario` SET Foto=@imagen WHERE
`ID.Usuario`= '"+id.ToString()+"';";
MySqlCommand comando = new MySqlCommand(cadena, conexion);
comando.Parameters.AddWithValue("@imagen", img);
comando.ExecuteNonQuery();
SetUserData(id);
}
public void UpdateUser(string user, string pwrd, string denom, string
RUT, string dir, string tel, int id)
{
comandos.Parameters.Clear();
AbrirConexion();
comandos.CommandText = "UPDATE `usuario` SET `Username` = '"+user+
"', `Contraseña` = AES_ENCRYPT(@Passwd, @key), `Denominacion` = '" + denom+"',
`RUT` = '"+RUT+"', `Direccion` = '"+dir+"', `Telefono` = '"+tel+"' WHERE
`usuario`.`ID.Usuario` = "+id.ToString()+";";
comandos.Parameters.AddWithValue("@Passwd", pwrd);
comandos.Parameters.AddWithValue("@key", Usuario.key);
comandos.ExecuteNonQuery();
SetUserData(id);
}
#endregion

#region Gastos
public DataTable GetGastos()
{
AbrirConexion();
comandos.CommandText = "SELECT IdGasto, Valor, Concepto, Tipo,
CAST(DATE_FORMAT(Fecha, '%e/%c/%Y') as char) Fecha from gasto where IdUsuario
= '" + Usuario.Id+"';";
EjecutarReader();
DTGastos.Rows.Clear();
DTGastos.Load(datos);
return DTGastos;
}
91

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

public void InsertarGasto(string Valor, string Fecha, string Concepto,


string Tipo)
{
AbrirConexion();
comandos.CommandText = "INSERT INTO `gasto` (`IdGasto`,
`IdUsuario`, `Valor`, `Tipo`, `Concepto`, `Fecha`) VALUES (NULL, '" +
Usuario.Id + "', '" + Valor + "', '" + Tipo + "', '" + Concepto + "',
STR_TO_DATE('" + Fecha + "', '%e/%c/%Y'));";
comandos.ExecuteNonQuery();
}
public void EliminarGasto(int id)
{
AbrirConexion();
comandos.CommandText = "DELETE FROM `gasto` WHERE
`gasto`.`IdGasto` IN (" + id + ") ;";
comandos.ExecuteNonQuery();

}
public void ActualizarGasto(string Valor, string Concepto, string
Fecha, string Tipo, string id)
{
AbrirConexion();
comandos.CommandText = "UPDATE `gasto` SET `Valor` = '" + Valor +
"', `Concepto` = '" + Concepto + "', `Fecha` = STR_TO_DATE('" + Fecha + "',
'%e/%c/%Y'), `Tipo` = '" + Tipo + "' WHERE `gasto`.`IdGasto` IN (" + id + ")
;";
comandos.ExecuteNonQuery();
}
#endregion

#region Clientes

public DataTable GetClientes()


{
AbrirConexion();
comandos.CommandText = "SELECT `ID.CLI`, `Nombre`, `Direccion`,
`Telefono`, `Saldo` from cliente WHERE IdUsuario = '" + Usuario.Id + "';";
EjecutarReader();
DTClientes.Rows.Clear();
DTClientes.Load(datos);
return DTClientes;
}
public void SetCliente(int idcli)
{
AbrirConexion();
comandos.CommandText = "SELECT `Nombre`, `Direccion`, `Telefono`,
`Saldo` from cliente WHERE `ID.CLI`= '"+idcli+"' AND `IdUsuario` = '" +
92

Usuario.Id + "';";

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

EjecutarReader();
DTClientes.Rows.Clear();
DTClientes.Load(datos);
Cliente.Nombre = DTClientes.Rows[0]["Nombre"].ToString();
Cliente.Direccion = DTClientes.Rows[0]["Direccion"].ToString();
Cliente.Telefono = DTClientes.Rows[0]["Telefono"].ToString();
Cliente.Saldo =
float.Parse(DTClientes.Rows[0]["Saldo"].ToString());
}
public void InsertarCliente(string Nombre, string Direccion, string
Telefono, float Saldo)
{
AbrirConexion();
comandos.CommandText = "INSERT INTO `cliente` (`ID.CLI`,
`IdUsuario`, `Nombre`, `Direccion`, `Telefono`, `Saldo`) VALUES
(NULL,'"+Usuario.Id+"', '" +Nombre+ "', '" +Direccion+ "', '" +Telefono+ "',
'" +Saldo+ "');";
comandos.ExecuteNonQuery();
}
public void EliminarCliente(int id)
{
AbrirConexion();
comandos.CommandText = "DELETE FROM `cliente` WHERE
`cliente`.`ID.CLI` IN (" + id + ") ;";
comandos.ExecuteNonQuery();

}
public void ActualizarCliente(string Nombre, string Direccion, string
Telefono, float Saldo, string id)
{
AbrirConexion();
comandos.CommandText = "UPDATE `cliente` SET `Nombre` = '" +
Nombre + "', `Direccion` = '" + Direccion + "', `Telefono` = '" + Telefono +
"', `Saldo` = '" + Saldo + "' WHERE `cliente`.`ID.CLI` IN (" + id + ") ;";
comandos.ExecuteNonQuery();
}

#endregion

#region Inventario
public DataTable MostrarDTProd()
{
AbrirConexion();
comandos.CommandText = "select `ID.Prod`, `PrecioUnitario`,
`Descripcion`, `Stock`, `CostoUnitario` from producto_venta WHERE `IdUsuario`
= '" + Usuario.Id + "';";
EjecutarReader();
93

DTProd.Rows.Clear();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

DTProd.Load(datos);
return DTProd;
}
public void SetProduct(int id)
{
AbrirConexion();
comandos.CommandText = "select `ID.Prod`, `PrecioUnitario`,
`Descripcion`, `Stock`, `CostoUnitario` from producto_venta where `ID.Prod` =
" + id + ";";
EjecutarReader();
DataTable producto = new DataTable();
producto.Load(datos);
Producto.ClearProductData();
if(producto.Rows.Count > 0)
{
Producto.IDPROD = int.Parse(producto.Rows[0][0].ToString());
Producto.Descripcion = producto.Rows[0][2].ToString();
Producto.PrecioUnitario =
int.Parse(producto.Rows[0][1].ToString());
Producto.Stock = int.Parse(producto.Rows[0][3].ToString());
Producto.CostoUnitario =
int.Parse(producto.Rows[0][4].ToString());
}
else
{
MessageBox.Show("No se encontraron datos.", "Error",
MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
}
public DataTable MostrarDTMatPrim()
{
AbrirConexion();
comandos.CommandText = "select `ID.Mat`, `Costo`, `Descripcion`,
`Stock` from materia_prima WHERE `IdUsuario` = '"+Usuario.Id+"';";
EjecutarReader();
DTMatPrim.Rows.Clear();
DTMatPrim.Load(datos);
return DTMatPrim;
}
public void InsertarProd(string stock, string descrip, string precio)
{
AbrirConexion();
comandos.CommandText = "INSERT INTO `producto_venta` (`ID.Prod`,
`IdUsuario`, `Stock`, `Descripcion`, `PrecioUnitario`) VALUES (NULL,
'"+Usuario.Id+"', '"+Double.Parse(stock)+ "', '" +descrip+ "', '" +
Double.Parse(precio) + "');";
comandos.ExecuteNonQuery();
94

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

public void InsertarMatPrim(string stock, string descrip, string


costo)
{
AbrirConexion();
comandos.CommandText = "INSERT INTO `materia_prima` (`ID.Mat`,
`IdUsuario`, `Costo`, `Descripcion`, `Stock`) VALUES (NULL, '"+Usuario.Id+"',
'" + Double.Parse(costo) + "', '" + descrip + "', '" + Double.Parse(stock) +
"');";
comandos.ExecuteNonQuery();
}
public void UpdateMatPrim(string stock, string descrip, string costo,
string id)
{
AbrirConexion();
comandos.CommandText = "UPDATE `materia_prima` SET `Costo` =
'"+double.Parse(costo)+"', `Descripcion` = '"+descrip+"', `Stock` =
'"+double.Parse(stock)+"' WHERE `materia_prima`.`ID.Mat` IN ("+id+") ;";
comandos.ExecuteNonQuery();
}
public void UpdateProd(string stock, string descrip, string precio,
string id)
{
AbrirConexion();
comandos.CommandText = "UPDATE `producto_venta` SET
`PrecioUnitario` = '" + double.Parse(precio) + "', `Descripcion` = '" +
descrip + "', `Stock` = '" + double.Parse(stock) + "' WHERE
`producto_venta`.`ID.Prod` IN (" + id + ") ;";
comandos.ExecuteNonQuery();
}
public void EliminarProd(string id)
{
AbrirConexion();
comandos.CommandText = "DELETE FROM `producto_venta` WHERE
`producto_venta`.`ID.Prod` IN (" + id + ") ;";
comandos.ExecuteNonQuery();
}
public void EliminarMatPrim(string id)
{
AbrirConexion();
comandos.CommandText = "DELETE FROM `materia_prima` WHERE
`materia_prima`.`ID.Mat` IN ("+id+") ;";
comandos.ExecuteNonQuery();

}
public void UsarMatPrim(int id, string fecha, float cantidad)
{
AbrirConexion();
95

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

comandos.CommandText = "INSERT INTO elaboracion VALUES (NULL,


'"+id+"', STR_TO_DATE('"+fecha+"', '%e/%c/%Y'), '"+cantidad+"');";
comandos.ExecuteNonQuery();
comandos.CommandText = "UPDATE `materia_prima` SET `Stock` =
`Stock` - '"+cantidad+"' WHERE `ID.Mat` = '"+id+"' ";
comandos.ExecuteNonQuery();
}
public int InsertarCostoProd(float cantidad, bool GenerarGasto, float
valor)
{
comandos.Parameters.Clear();
AbrirConexion();
comandos.CommandText = "UPDATE `producto_venta` SET
`CostoUnitario` = @costo, `Stock` = `Stock` + @Cantidad WHERE `ID.Prod` =
@idprod;";
comandos.Parameters.Add("@costo", MySqlDbType.Float).Value =
Producto.CostoUnitario;
comandos.Parameters.Add("@idprod", MySqlDbType.Int32).Value =
Producto.IDPROD;
comandos.Parameters.Add("@Cantidad", MySqlDbType.Int32).Value =
cantidad;
int i = comandos.ExecuteNonQuery();
comandos.Parameters.Clear();
if (GenerarGasto)
{
comandos.Parameters.Clear();
comandos.CommandText = "insert into gasto (IdUsuario, Valor,
Concepto, Fecha, Tipo) values (@IdUsuario, @Valor, 'Produccion de
"+Producto.Descripcion+ "', @Fecha, 'Generado automáticamente');";
comandos.Parameters.Add("@IdUsuario", MySqlDbType.Int32).Value
= Usuario.Id;
comandos.Parameters.Add("@Valor", MySqlDbType.Float).Value =
valor;
comandos.Parameters.Add("@Fecha", MySqlDbType.Date).Value =
DateTime.Now.Date;
i += comandos.ExecuteNonQuery();
}
return i;
}
#endregion

#region Gestor de conexion


public void AbrirConexion()
{
if (conexion.State == ConnectionState.Closed)
{
conexion.Open();
96

comandos.Connection = conexion;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

}
}
public void setComandos(string consulta)
{
comandos.CommandText = consulta;
}
public void EjecutarReader()
{
CerrarReader();
datos = comandos.ExecuteReader();
}
public void CerrarReader()
{
if (datos != null)
{
datos.Dispose();
datos.Close();
}
}
public void CerrarConexion()
{
if(conexion.State == ConnectionState.Open)
{
conexion.Dispose();
conexion.Close();
}
}
protected MySqlConnection GetMySqlConnection()
{
return conexion;
}
#endregion
}
}
97

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMINICIAL.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using MySql.Data.MySqlClient;
using Ingenieros_Commerce_Manager_v2._0.Entities;
using System.IO;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormInicial : Form
{
public FormInicial()
{
InitializeComponent();
//Estas lineas eliminan los parpadeos del formulario o controles
en la interfaz grafica (Pero no en un 100%)
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
//Instancia de clase
conexionsql conexionsql = new conexionsql();
SecurityCheck check = new SecurityCheck();

#region Controles y movimiento de ventana


private void BotonCerrar_Click(object sender, EventArgs e)
{
Application.Exit();
conexionsql.CerrarConexion();
}
private void BotonMinMax_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
RedondeoForm.CornerRadius = 0;
}
else
{
98

this.WindowState = FormWindowState.Normal;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

RedondeoForm.CornerRadius = 30;

}
}
private void BotonHide_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
[DllImport("user32.dll", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.dll", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg,
int wParam, int lParam);
private void panelHeader_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}

private int tolerance = 12;


private const int WM_NCHITTEST = 132;
private const int HTBOTTOMRIGHT = 17;
private Rectangle sizeGripRectangle;
protected override void WndProc(ref Message m) //Metodo para
redimensionar
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
var hitPoint = this.PointToClient(new
Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16));
if (sizeGripRectangle.Contains(hitPoint))
m.Result = new IntPtr(HTBOTTOMRIGHT);
break;
default:
base.WndProc(ref m);
break;
}
}
protected override void OnSizeChanged(EventArgs e) //Dibujar
rectangulo inferior
{
base.OnSizeChanged(e);
var region = new Region(new Rectangle(0, 0,
this.ClientRectangle.Width, this.ClientRectangle.Height));
sizeGripRectangle = new Rectangle(this.ClientRectangle.Width -
99

tolerance, this.ClientRectangle.Height - tolerance, tolerance, tolerance);

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

region.Exclude(sizeGripRectangle);
this.panelContenedor.Region = region;
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e) //Interactuar con el
rectangulo
{
SolidBrush blueBrush = new SolidBrush(Color.FromArgb(244, 244,
244));
e.Graphics.FillRectangle(blueBrush, sizeGripRectangle);
base.OnPaint(e);
ControlPaint.DrawSizeGrip(e.Graphics, Color.Transparent,
sizeGripRectangle);
}
#endregion

#region Estetica
private void lblRegistrarse_MouseHover(object sender, EventArgs e)
//Efecto estetico
{
lblRegistrarse.Cursor = Cursors.Hand;
lblRegistrarse.ForeColor = Color.Purple;
}

private void lblRegistrarse_MouseLeave(object sender, EventArgs e)


//Efecto estetico
{
lblRegistrarse.ForeColor = Color.DarkBlue;
}

private void btnPWDChar_Click(object sender, EventArgs e) //Muestra o


esconde los caracteres de contrasena
{
if (txbPasswd.PasswordChar == true && txbConfirm.PasswordChar ==
true)
{
txbPasswd.PasswordChar = false;
txbConfirm.PasswordChar = false;
btnPWDChar.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.hidepwd;
}
else
{
txbPasswd.PasswordChar = true;
txbConfirm.PasswordChar = true;
btnPWDChar.Image =
100

Ingenieros_Commerce_Manager_v2._0.Properties.Resources.showpwd;
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void lblVolver_MouseHover(object sender, EventArgs e) //Efecto


estetico
{
lblVolver.Cursor = Cursors.Hand;
lblVolver.ForeColor = Color.Purple;
}
private void lblVolver_MouseLeave(object sender, EventArgs e) //Efecto
estetico
{
lblVolver.ForeColor = Color.DarkBlue;
}
#endregion

#region Botones y formulario de login/registro

private void btnLogin_Click(object sender, EventArgs e) //Conecta con


la base de datos
{
if (txbPasswd.Texts.Length == 0 | txbUsuario.Texts.Length == 0)
{
MessageBox.Show("Campos de texto vacíos.",
"Error",MessageBoxButtons.OK ,MessageBoxIcon.Warning);
}
else
{
try
{
if (check.LogWEncryptPasswd(txbUsuario.Texts,
txbPasswd.Texts))
{
Usuario.Id = conexionsql.GetUserID(txbUsuario.Texts);
conexionsql.SetUserData(Usuario.Id);
Module.formInicio = this;
FormPrincipal formPrincipal = new FormPrincipal();
if (btnRecordar.Checked)
{
TextWriter archivo = new
StreamWriter("UserInfo.txt");
archivo.WriteLine(txbUsuario.Texts);
archivo.WriteLine(txbPasswd.Texts);
archivo.Close();
}
else
{
101

if (File.Exists("UserInfo.txt"))

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
File.Delete("UserInfo.txt");
}
}
formPrincipal.Show();
this.Hide();

}
else
{
MessageBox.Show("Usuario o contraseña incorrectos.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\nError al conectar, intente
de nuevo más tarde.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

}
private void lblRegistrarse_Click(object sender, EventArgs e)
//Muestra la interfaz de registro
{
lblRecordar.Visible = false;
btnRecordar.Visible = false;
txbConfirm.Visible = true;
btnRegistrarse.Visible = true;
btnLogin.Visible = false;
lblRegistrarse.Visible= false;
lblVolver.Visible = true;
}
private void btnRegistrarse_Click(object sender, EventArgs e) //Se
registra en la base de datos
{
try
{

if (txbPasswd.Texts == txbConfirm.Texts)
{
if(check.RegisterWEncrypt(txbUsuario.Texts,
txbPasswd.Texts) > 0)
{
MessageBox.Show("Usted fue registrado con éxito!",
"Usuario registrado", MessageBoxButtons.OK, MessageBoxIcon.Information);
102

txbConfirm.Visible = false;
lblRecordar.Visible = true;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnRecordar.Visible = true;
btnRegistrarse.Visible = false;
btnLogin.Visible = true;
lblRegistrarse.Visible = true;
lblVolver.Visible = false;
}
else
{
MessageBox.Show("Error al registrar, intente de nuevo
más tarde.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

}
else
{
MessageBox.Show("Las contraseñas no son iguales.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
if (ex.Message.Contains("Duplicate entry"))
{
MessageBox.Show("El usuario ya existe.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}

private void lblVolver_Click(object sender, EventArgs e)//Vuelve a la


interfaz de inicio de sesion
{
lblVolver.Visible = false;
txbConfirm.Visible = false;
btnRegistrarse.Visible = false;
btnLogin.Visible = true;
lblRegistrarse.Visible = true;
lblRecordar.Visible = true;
btnRecordar.Visible = true;

}
103

#endregion

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void FormInicial_Load(object sender, EventArgs e)


{
Usuario.ClearData();
if(File.Exists("UserInfo.txt"))
{
TextReader leer = new StreamReader("UserInfo.txt");
txbUsuario.RemovePlaceholder();
txbPasswd.RemovePlaceholder();
txbUsuario.Texts = leer.ReadLine();
txbPasswd.Texts = leer.ReadLine();
btnRecordar.Checked = true;
leer.Close();
}
}
}
}
104

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMINVENTARIO.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using Microsoft.VisualStudio.Utilities.Internal;
using Ingenieros_Commerce_Manager_v2._0.Entities;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormInventario : Form
{
//Instancia de clase
conexionsql sql = new conexionsql();
Module module = new Module();
//Variables
private string idprod = null, idmat = null;
private bool editar = false;
public FormInventario()
{
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}

private void FormInventario_Load(object sender, EventArgs e)


{
try
{
MostrarProductos();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
foreach (DataGridViewColumn column in dgvProductos.Columns)
{
105

cmbBusqueda.Items.Add(column.HeaderText);
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

foreach (DataGridViewColumn column in dgvMatPrim.Columns)


{
if(column.HeaderText != "Descripcion" && column.HeaderText !=
"Stock")
{
cmbBusqueda.Items.Add(column.HeaderText);
}
}
cmbBusqueda.Texts = "Descripcion";
txbStock.Texts = "0";
}
private void MostrarProductos()
{
dgvProductos.DataSource = sql.MostrarDTProd();
dgvMatPrim.DataSource = sql.MostrarDTMatPrim();
dgvProductos.Refresh();
dgvMatPrim.Refresh();
}

private void RemovePlaceHolders()


{
txbDescrip.RemovePlaceholder();
txbPrecio.RemovePlaceholder();
txbStock.RemovePlaceholder();
}
private void ClearTextBoxs()
{
txbStock.Texts = "";
txbPrecio.Texts = "";
txbDescrip.Texts = "";
dgvMatPrim.ClearSelection();
dgvProductos.ClearSelection();
idprod = null;
idmat = null;
}
private void dgvMatPrim_Click(object sender, EventArgs e)
{

if (dgvMatPrim.SelectedRows.Count > 0)
{
dgvProductos.ClearSelection();
if (idmat == null)
{
idmat =
dgvMatPrim.CurrentRow.Cells["ID.Mat"].Value.ToString();
106

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

else if
(!(idmat.Contains(dgvMatPrim.CurrentRow.Cells["ID.Mat"].Value.ToString())))
{
idmat = idmat + ", " +
dgvMatPrim.CurrentRow.Cells["ID.Mat"].Value.ToString();
}

}
cmbTipo.Texts = "Materia Prima";
}
private void btnIngreso_Click(object sender, EventArgs e)
{
if (txbPrecio.Texts.Trim() != "" && txbStock.Texts.Trim() != "" &&
txbDescrip.Texts.Trim() != "" && cmbTipo.Texts.Trim() != "")
{
if (cmbTipo.Texts == "Producto en Venta")
{
try
{
if (editar == true)
{
sql.UpdateProd(txbStock.Texts, txbDescrip.Texts,
txbPrecio.Texts, idprod);
editar = false;
}
else
{
sql.InsertarProd(txbStock.Texts, txbDescrip.Texts,
txbPrecio.Texts);
}
MostrarProductos();
MessageBox.Show("Datos ingresados correctamente",
"Acción realizada", MessageBoxButtons.OK, MessageBoxIcon.Information);
ClearTextBoxs();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else if (cmbTipo.Texts == "Materia Prima")
{
try
{
107

if (editar == true)
{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

sql.UpdateMatPrim(txbStock.Texts,
txbDescrip.Texts, txbPrecio.Texts, idmat);
editar = false;
}
else
{
sql.InsertarMatPrim(txbStock.Texts,
txbDescrip.Texts, txbPrecio.Texts);
}
MostrarProductos();
MessageBox.Show("Datos ingresados correctamente",
"Acción realizada", MessageBoxButtons.OK, MessageBoxIcon.Information);
ClearTextBoxs();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Ingrese un tipo válido", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Debe completar todos los campos", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnEdit_Click(object sender, EventArgs e)


{
if (dgvMatPrim.SelectedRows.Count > 0)
{
RemovePlaceHolders();
txbDescrip.Texts =
dgvMatPrim.CurrentRow.Cells["Descripcion"].Value.ToString();
txbStock.Texts =
dgvMatPrim.CurrentRow.Cells["Stock"].Value.ToString();
txbPrecio.Texts =
dgvMatPrim.CurrentRow.Cells["Costo"].Value.ToString();
108

cmbTipo.Texts = "Materia Prima";


editar = true;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

}
else if (dgvProductos.SelectedRows.Count > 0)
{
RemovePlaceHolders();
txbPrecio.Texts =
dgvProductos.CurrentRow.Cells["PrecioUnitario"].Value.ToString();
txbDescrip.Texts =
dgvProductos.CurrentRow.Cells["Descripcion"].Value.ToString();
txbStock.Texts =
dgvProductos.CurrentRow.Cells["Stock"].Value.ToString();
cmbTipo.Texts = "Producto en Venta";
editar = true;

}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnElimina_Click(object sender, EventArgs e)


{
if (dgvMatPrim.SelectedRows.Count > 0)
{
var respuesta = MessageBox.Show("¿Desea eliminar los elementos
seleccionados? Esta acción no puede revertirse", "Advertencia",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (respuesta == DialogResult.Yes)
{

try
{
sql.EliminarMatPrim(idmat);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
}
else if (dgvProductos.SelectedRows.Count > 0)
109

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

var respuesta = MessageBox.Show("¿Desea eliminar los elementos


seleccionados? Esta acción no puede revertirse", "Advertencia",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (respuesta == DialogResult.Yes)
{
try
{
sql.EliminarProd(idprod);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
MostrarProductos();
ClearTextBoxs();
}

private void btnDeseleccionar_Click(object sender, EventArgs e)


{
dgvProductos.ClearSelection();
dgvMatPrim.ClearSelection();
idmat = null;
idprod = null;
editar = false;
ClearTextBoxs();
}

private void btnClear_Click(object sender, EventArgs e)


{
txbBuscar.Texts = "";
foreach (DataGridViewRow row in dgvProductos.Rows)
{
row.Visible = true;
}
foreach (DataGridViewRow row in dgvMatPrim.Rows)
{
row.Visible = true;
}
110

cmbBusqueda.Texts = "";

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void txbBuscar__TextChanged(object sender, EventArgs e)


{
BusquedaCompleta();
}
private void Buscar(DataGridView dgv, string Filter)
{
foreach (DataGridViewRow row in dgv.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
else
{
row.Visible = false;
}
}
}
private void BusquedaCompleta()
{
CurrencyManager manager =
(CurrencyManager)dgvProductos.BindingContext[dgvProductos.DataSource];
CurrencyManager manager1 =
(CurrencyManager)dgvMatPrim.BindingContext[dgvMatPrim.DataSource];
manager.SuspendBinding();
manager1.SuspendBinding();
string Filter = cmbBusqueda.Texts;
if (dgvProductos.Rows.Count > 0 | dgvMatPrim.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
if (Filter == "ID.Prod" | Filter == "PrecioUnitario")
{
Buscar(dgvProductos, Filter);
foreach (DataGridViewRow row in dgvMatPrim.Rows)
{
row.Visible = false;
}
111

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

else if (Filter == "ID.Mat" | Filter == "Costo")


{
Buscar(dgvMatPrim, Filter);
foreach (DataGridViewRow row in dgvProductos.Rows)
{
row.Visible = false;
}
}
else
{
Buscar(dgvProductos, Filter);
Buscar(dgvMatPrim, Filter);
}
}
}
manager.ResumeBinding();
manager1.ResumeBinding();
}

private void cmbBusqueda_OnSelectedIndexChanged(object sender,


EventArgs e)
{
BusquedaCompleta();
}

private void btnUsar_Click(object sender, EventArgs e)


{
MateriaPrima.Descripcion =
dgvMatPrim.CurrentRow.Cells["Descripcion"].Value.ToString();
MateriaPrima.Stock =
float.Parse(dgvMatPrim.CurrentRow.Cells["Stock"].Value.ToString());
MateriaPrima.Costo =
float.Parse(dgvMatPrim.CurrentRow.Cells["Costo"].Value.ToString());
MateriaPrima.Id =
int.Parse(dgvMatPrim.CurrentRow.Cells["ID.Mat"].Value.ToString());
FormUsarMatPrim form = new FormUsarMatPrim();
form.ShowDialog();
MostrarProductos();
}

private void dgvMatPrim_SelectionChanged(object sender, EventArgs e)


{
if(dgvMatPrim.SelectedRows.Count == 1)
{
btnUsar.Visible = true;
}
else
112

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnUsar.Visible = false;
}
}

private void btnUp_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbStock.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbStock.Texts = "0";
txbStock.Select();
return;
}
txbStock.Texts = (num + 1).ToString();
txbStock.Select();

private void btnDown_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbStock.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbStock.Texts = "0";
txbStock.Select();
return;
}
txbStock.Texts = (num - 1).ToString();
txbStock.Select();
}

private void btnRefresh_Click(object sender, EventArgs e)


{
try
{
MostrarProductos();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
113

private void dgvProductos_SelectionChanged(object sender, EventArgs e)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
if (dgvProductos.SelectedRows.Count == 1)
{
btnCalcular.Visible = true;
}
else
{
btnCalcular.Visible = false;
}
}

private void btnCalcular_Click(object sender, EventArgs e)


{

sql.SetProduct(int.Parse(dgvProductos.CurrentRow.Cells["ID.Prod"].Value.ToStri
ng()));
FormCalcularCosto formCalcularCosto = new FormCalcularCosto();
var respuesta = formCalcularCosto.ShowDialog();
if(respuesta == DialogResult.OK)
{
MessageBox.Show("Datos ingresados correctamente.", "Acción
realizada", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
MostrarProductos();
}

private void dgvProductos_Click(object sender, EventArgs e)


{
if(dgvProductos.SelectedRows.Count > 0)
{
dgvMatPrim.ClearSelection();
if(idprod == null)
{
idprod =
dgvProductos.CurrentRow.Cells["ID.Prod"].Value.ToString();
}
else if
(!(idprod.Contains(dgvProductos.CurrentRow.Cells["ID.Prod"].Value.ToString()))
)
{
idprod =idprod+", "+
dgvProductos.CurrentRow.Cells["ID.Prod"].Value.ToString();

}
}
cmbTipo.Texts = "Producto en Venta";
}
114

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

}
115

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMPRINCIPAL.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using MySql.Data.MySqlClient;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormPrincipal : Form
{
public FormPrincipal()
{
InitializeComponent();
//Estas lineas eliminan los parpadeos del formulario o controles
en la interfaz grafica (Pero no en un 100%)
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
Module.formContenedor = this;
conexionsql.CerrarReader();
}
//Instancia de clase
conexionsql conexionsql = new conexionsql();
FormSeguridad formSeguridad = new FormSeguridad();
//Variables
bool sideBarOpen = true;
bool ventasClosed = true;

#region Controles y movimiento de ventana


private void BotonCerrar_Click(object sender, EventArgs e)
{
Application.Exit();
conexionsql.CerrarConexion();
}
private void BotonMinMax_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
116

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

this.WindowState = FormWindowState.Maximized;
RedondeoForm.CornerRadius = 0;
}
else
{
this.WindowState = FormWindowState.Normal;
RedondeoForm.CornerRadius = 30;

}
}
private void BotonHide_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
[DllImport("user32.dll", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.dll", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg,
int wParam, int lParam);
private void panelHeader_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
RedondeoForm.CornerRadius = 30;
}

private int tolerance = 12;


private const int WM_NCHITTEST = 132;
private const int HTBOTTOMRIGHT = 17;
private Rectangle sizeGripRectangle;
protected override void WndProc(ref Message m) //Metodo para
redimensionar
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
var hitPoint = this.PointToClient(new
Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16));
if (sizeGripRectangle.Contains(hitPoint))
m.Result = new IntPtr(HTBOTTOMRIGHT);
break;
default:
base.WndProc(ref m);
break;
}
}
117

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

protected override void OnSizeChanged(EventArgs e) //Dibujar


rectangulo inferior
{
base.OnSizeChanged(e);
var region = new Region(new Rectangle(0, 0,
this.ClientRectangle.Width, this.ClientRectangle.Height));
sizeGripRectangle = new Rectangle(this.ClientRectangle.Width -
tolerance, this.ClientRectangle.Height - tolerance, tolerance, tolerance);
region.Exclude(sizeGripRectangle);
this.panelContenedor.Region = region;
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e) //Interactuar con el
rectangulo
{
SolidBrush blueBrush = new SolidBrush(Color.FromArgb(244, 244,
244));
e.Graphics.FillRectangle(blueBrush, sizeGripRectangle);
base.OnPaint(e);
ControlPaint.DrawSizeGrip(e.Graphics, Color.Transparent,
sizeGripRectangle);
}
#endregion

//Metodo para abrir formularios dentro del panel


private void AbrirFormulario<MiForm>() where MiForm : Form, new()
{
Form formulario =
panelPrincipal.Controls.OfType<MiForm>().FirstOrDefault(); //Busca el
formulario
if (formulario == null)
{
formulario = new MiForm();
formulario.TopLevel = false;
formulario.FormBorderStyle = FormBorderStyle.None;
formulario.Dock = DockStyle.Fill;
panelPrincipal.Controls.Add(formulario);
panelPrincipal.Tag = formulario;
formulario.Show();
formulario.BringToFront();
}
else
{
formulario.BringToFront();
}
}
118

#region Menu lateral

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void colorearBoton(Button color, Button gris, Button gris2,


Button gris3, Button gris4, Button gris5)
{
color.ForeColor = Color.FromArgb(6, 22, 204);
gris.ForeColor = Color.FromArgb(96, 98, 102);
gris2.ForeColor = Color.FromArgb(96, 98, 102);
gris3.ForeColor = Color.FromArgb(96, 98, 102);
gris4.ForeColor = Color.FromArgb(96, 98, 102);
gris5.ForeColor = Color.FromArgb(96, 98, 102);

if (color == btnVentas)
{
btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24blue;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24;
btnPagos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24;
btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24;
}
else if (color == btnGastos)
{

btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24blue;
btnPagos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24;
btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24;
}
else if (color == btnPagos)
{
btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24;
119

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnPagos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24blue;
btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24;
}
else if (color == btnInventario)
{
btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24;
btnPagos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24;
btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24blue;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24;
}
else if (color == btnResumen)
{
btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24;
btnPagos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24;
btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24blue;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24;
}
else if (color == btnUsuario)
{
btnVentas.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.venta24;
btnGastos.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.gasto24;
btnPagos.Image =
120

Ingenieros_Commerce_Manager_v2._0.Properties.Resources.pagos24;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnInventario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.inevntario24;
btnResumen.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.resumen24;
btnUsuario.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.usuario24blue;
}
}
private void btnVentas_Click(object sender, EventArgs e)
{
TimerVentas.Start();

}
private void btnGastos_Click(object sender, EventArgs e)
{
colorearBoton(btnGastos, btnPagos, btnVentas, btnInventario,
btnResumen, btnUsuario);
AbrirFormulario<FormGastos>();
}
private void btnPagos_Click(object sender, EventArgs e)
{
colorearBoton(btnPagos, btnVentas, btnGastos, btnInventario,
btnResumen, btnUsuario);
AbrirFormulario<FormClientes>();
}
private void btnInventario_Click(object sender, EventArgs e)
{
var respuesta = formSeguridad.ShowDialog();
if (respuesta == DialogResult.OK)
{
colorearBoton(btnInventario, btnPagos, btnGastos, btnVentas,
btnResumen, btnUsuario);
AbrirFormulario<FormInventario>();
}
}
private void btnResumen_Click(object sender, EventArgs e)
{
var respuesta = formSeguridad.ShowDialog();
if (respuesta == DialogResult.OK)
{
colorearBoton(btnResumen, btnPagos, btnGastos, btnVentas,
btnInventario, btnUsuario);
AbrirFormulario<FormResumen>();
}
}
private void btnUsuario_Click(object sender, EventArgs e)
{
121

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

colorearBoton(btnUsuario, btnPagos, btnGastos, btnVentas,


btnInventario, btnResumen);
AbrirFormulario<FormUsuario>();

}
private void sidebarTimer_Tick(object sender, EventArgs e)
{
if (sideBarOpen)
{
sideBarPanel.Width -= 30;
panelPrincipal.Width += 30;
int x = panelPrincipal.Location.X;
int y = panelPrincipal.Location.Y;
panelPrincipal.Location = new Point(x-30, y);
if (sideBarPanel.Width == sideBarPanel.MinimumSize.Width)
{
panelPrincipal.Location = new Point(71, y);
panelPrincipal.Width = panelHeader.Width -
sideBarPanel.Width;
sideBarOpen = false;
sidebarTimer.Stop();
}
}
else
{
sideBarPanel.Width += 30;
panelPrincipal.Width -= 30;
int x = panelPrincipal.Location.X;
int y = panelPrincipal.Location.Y;
panelPrincipal.Location = new Point(x + 30, y);
if (sideBarPanel.Width == sideBarPanel.MaximumSize.Width)
{
panelPrincipal.Location = new Point(230, y);
panelPrincipal.Width = panelHeader.Width -
sideBarPanel.Width;
sideBarOpen = true;
sidebarTimer.Stop();
}

}
}
private void btnMenu_Click(object sender, EventArgs e)
{
sidebarTimer.Start();
}
private void TimerVentas_Tick(object sender, EventArgs e)
122

{
if (ventasClosed)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
VentasContainer.Height += 30;
if(VentasContainer.Height ==
VentasContainer.MaximumSize.Height)
{
ventasClosed = false;
TimerVentas.Stop();
}
}
else
{
VentasContainer.Height -= 30;
if(VentasContainer.Height ==
VentasContainer.MinimumSize.Height)
{
ventasClosed = true;
TimerVentas.Stop();
}
}
}
private void btnRegistrar_Click(object sender, EventArgs e)
{
TimerVentas.Start();
AbrirFormulario<FormVentas>();
colorearBoton(btnVentas, btnPagos, btnGastos, btnInventario,
btnResumen, btnUsuario);
}
private void btnHistorial_Click(object sender, EventArgs e)
{
TimerVentas.Start();
AbrirFormulario<FormHistorialVenta>();
colorearBoton(btnVentas, btnPagos, btnGastos, btnInventario,
btnResumen, btnUsuario);

}
#endregion

}
}
123

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMVENTAS.CS
using System;
using System.Data;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Reflection;
using System.Runtime.Remoting.Messaging;
using System.Windows.Forms;
using Ingenieros_Commerce_Manager_v2._0.Entities;
using iTextSharp.text.pdf;
using iTextSharp.text;
using iTextSharp.tool.xml;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormVentas : Form
{
public FormVentas()
{
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
//Instancia de clase
conexionsql sql = new conexionsql();
Module module = new Module();
//Variables
int pago;

private void FormVentas_Load(object sender, EventArgs e)


{
txbFecha.Texts = DateTime.Now.ToString("dd/MM/yyyy");
txbCantidad.Texts = "0";
txbIDProd.Texts = "0";
txbCambio.Texts = "0";
}

private void btnUp_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
124

MessageBoxButtons.OK, MessageBoxIcon.Error);
txbCantidad.Texts = "0";

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

txbCantidad.Select();
return;
}
txbCantidad.Texts = (num + 1).ToString();
txbCantidad.Select();
}

private void btnDown_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbCantidad.Texts = "0";
txbCantidad.Select();
return;
}
txbCantidad.Texts = (num - 1).ToString();
txbCantidad.Select();
}

private void btnBuscarCli_Click(object sender, EventArgs e)


{
FormBuscarCliente cliente = new FormBuscarCliente();
cliente.ShowDialog();
txbNombre.Texts = Cliente.Nombre;
}

private void btnBuscarProd_Click(object sender, EventArgs e)


{
FormBuscarProd prod = new FormBuscarProd();
prod.ShowDialog();
FillProductInfo();

}
private void FillProductInfo()
{
txbIDProd.Texts = Producto.IDPROD.ToString();
txbProd.Texts = Producto.Descripcion;
txbPrecio.Texts = Producto.PrecioUnitario.ToString();
txbStock.Texts = Producto.Stock.ToString();
txbCantidad.Select();
}

private void btnID_Click(object sender, EventArgs e)


{
125

try
{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

sql.SetProduct(int.Parse(txbIDProd.Texts));
FillProductInfo();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

private void btnAgregar_Click(object sender, EventArgs e)


{
try
{
int precio;
bool prodexiste = false;
if (txbIDProd.Texts.Trim() == "" | txbProd.Texts.Trim() == ""
| txbCantidad.Texts.Trim() == "" | txbPrecio.Texts.Trim() == "")
{
MessageBox.Show("Seleccione un producto.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txbIDProd.Select();
return;
}
if (float.Parse(txbCantidad.Texts) >
float.Parse(txbStock.Texts))
{
MessageBox.Show("La cantidad no puede ser mayor al
stock.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txbCantidad.Select();
return;
}
if (!int.TryParse(txbPrecio.Texts, out precio))
{
MessageBox.Show("Formato de precio incorrecto.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txbPrecio.Select();
return;
}
if (int.Parse(txbIDProd.Texts) == 0)
{
MessageBox.Show("Seleccione un producto.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txbIDProd.Select();
return;
126

}
foreach (DataGridViewRow row in dgvVenta.Rows)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
if (row.Cells["IDProducto"].Value.ToString() ==
txbIDProd.Texts)
{
prodexiste = true;
break;
}
}
if (!prodexiste)
{
dgvVenta.Rows.Add(
new object[]
{
txbIDProd.Texts,
txbProd.Texts,
txbCantidad.Texts,
precio.ToString(),
(float.Parse(txbCantidad.Texts)*precio).ToString()
});
sql.RestarStock(int.Parse(txbIDProd.Texts),
txbCantidad.Texts.Replace(',', '.'));
}
else
{
MessageBox.Show("El producto ya ha sido seleccionado.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txbIDProd.Select();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}

CalcularTotal();
ClearProducts();
txbIDProd.Select();
}

private void CalcularTotal()


{
if(dgvVenta.Rows.Count > 0)
{
float total = 0;
foreach(DataGridViewRow row in dgvVenta.Rows)
127

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

total = total +
float.Parse(row.Cells["SubTotal"].Value.ToString());
}
txbTotal.Texts = total.ToString("0.00");
}
}
private void ClearProducts()
{
txbIDProd.Texts = "0";
txbProd.Texts = "";
txbPrecio.Texts = "";
txbStock.Texts = "";
txbCantidad.Texts = "0";
}

private void dgvVenta_CellPainting(object sender,


DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0)
return;
if(e.ColumnIndex == 5)
{
e.Paint(e.CellBounds, DataGridViewPaintParts.All);
var w = Properties.Resources.trash24.Width;
var h = Properties.Resources.trash24.Height;
var x = e.CellBounds.Left + (e.CellBounds.Width - w) / 2;
var y = e.CellBounds.Top + (e.CellBounds.Height - h) / 2;

e.Graphics.DrawImage(Properties.Resources.trash24, new
System.Drawing.Rectangle(x, y, w, h));
e.Handled = true;

}
}

private void dgvVenta_CellContentClick(object sender,


DataGridViewCellEventArgs e)
{
if (dgvVenta.Columns[e.ColumnIndex].Name == "Eliminar")
{
int index = e.RowIndex;
if (index >= 0)
{
try
{
sql.SumarStock
128

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

int.Parse(dgvVenta.Rows[index].Cells["IDProducto"].Value.ToString()),

dgvVenta.Rows[index].Cells["Cantidad"].Value.ToString().Replace(',', '.')
);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar+",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

dgvVenta.Rows.RemoveAt(index);
CalcularTotal();
}
}
}
private void CalcularCambio()
{
if(txbPaga.Texts.Length == 0)
{
txbCambio.Texts = "0";
return;
}
if (!int.TryParse(txbPaga.Texts, out pago))
{
MessageBox.Show("Formato incorrecto.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if (txbTotal.Texts.Trim() == "")
{
MessageBox.Show("No existen productos en la venta.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if(pago < float.Parse(txbTotal.Texts))
{
return;
}
txbCambio.Texts = (pago - float.Parse(txbTotal.Texts)).ToString();
}

private void txbPaga__TextChanged(object sender, EventArgs e)


{
CalcularCambio();
129

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void txbTotal__TextChanged(object sender, EventArgs e)


{
CalcularCambio();
}

private void btnCrearVenta_Click(object sender, EventArgs e)


{
sql.CerrarReader();
if(dgvVenta.Rows.Count < 1)
{
MessageBox.Show("Ingrese productos en la venta.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

DataTable detalle = new DataTable();


detalle.Columns.Add("IDProducto", typeof(int));
detalle.Columns.Add("PrecioVenta", typeof(float));
detalle.Columns.Add("Cantidad", typeof(float));
detalle.Columns.Add("SubTotal", typeof(float));

foreach(DataGridViewRow row in dgvVenta.Rows)


{
detalle.Rows.Add(new object[]
{
row.Cells["IDProducto"].Value.ToString(),
row.Cells["PrecioUnitario"].Value.ToString(),
row.Cells["Cantidad"].Value.ToString(),
row.Cells["SubTotal"].Value.ToString()
});
}
bool envio = false;
if (rbtnDomicilio.Checked == true && rbtnLocal.Checked == false)
{
envio = true;
}
else if(rbtnLocal.Checked == true && rbtnDomicilio.Checked ==
true)
{
envio= false;
}
float cambio;
if (float.TryParse(txbCambio.Texts, out cambio))
{
txbCambio.Text = "0";
}
130

else
{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

cambio= 0;
}
int idventa = sql.RegistrarVenta(cmbTipoDoc.Texts, txbFecha.Texts,
float.Parse(txbTotal.Texts), envio, cambio, detalle);
if (idventa != 0)
{
var respuesta = MessageBox.Show("Venta Nº:'"+idventa+"'
generada \n ¿Desea generar el documento?", "Acción completada",
MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if(respuesta == DialogResult.Yes)
{
SaveFileDialog dialog = new SaveFileDialog();

dialog.FileName = DateTime.Now.ToString("ddMMyyyyHHmmss")
+ ".pdf";
dialog.AddExtension = true;
dialog.DefaultExt = "pdf";
dialog.RestoreDirectory = true;

string txthtml =
Properties.Resources.Plantilla.ToString();

txthtml = txthtml.Replace("@DENOMINACION",
Usuario.Denominacion);
txthtml = txthtml.Replace("@DIRECCION",
Usuario.Direccion);
txthtml = txthtml.Replace("@TELEFONO", Usuario.Telefono);
txthtml = txthtml.Replace("@RUT", Usuario.RUT);
txthtml = txthtml.Replace("@TIPODOCUMENTO",
cmbTipoDoc.Texts);
txthtml = txthtml.Replace("@IDVENTA",
idventa.ToString("000000"));
txthtml = txthtml.Replace("@FECHA", txbFecha.Texts);
txthtml = txthtml.Replace("@TOTAL", txbTotal.Texts);
txthtml = txthtml.Replace("@CLIENTE", txbNombre.Texts);
txthtml = txthtml.Replace("@DIRCLI", Cliente.Direccion);

string filas = string.Empty;


foreach (DataGridViewRow row in dgvVenta.Rows)
{

sql.SetProduct(int.Parse(row.Cells["IDProducto"].Value.ToString()));
filas += "<tr>";
filas += "<td>" +
row.Cells["Cantidad"].Value.ToString() + "</td>";
filas += "<td>" + Producto.Descripcion + "</td>";
filas += "<td>" +
131

row.Cells["PrecioUnitario"].Value.ToString() + "</td>";

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

filas += "<td>" +
row.Cells["SubTotal"].Value.ToString() + "</td>";
filas += "</tr>";
}
txthtml = txthtml.Replace("@FILAS", filas);

if (dialog.ShowDialog() == DialogResult.OK)
{
using (FileStream fs = new FileStream(dialog.FileName,
FileMode.Create))
{
Document pdf = new Document(PageSize.A4, 25, 25,
25, 25);
PdfWriter writer = PdfWriter.GetInstance(pdf, fs);
pdf.Open();
pdf.Add(new Phrase(""));

System.Drawing.Image img =
System.Drawing.Image.FromStream(Usuario.ByteToImage(Usuario.Foto));
var format = img.RawFormat;
iTextSharp.text.Image image =
iTextSharp.text.Image.GetInstance(img, format);
image.ScaleToFit(80, 80);
image.Alignment =
iTextSharp.text.Image.UNDERLYING;
image.SetAbsolutePosition(pdf.LeftMargin, pdf.Top
- 80);
pdf.Add(image);

using (StringReader sr = new


StringReader(txthtml))
{

XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdf, sr);


}
pdf.Close();
fs.Close();
}
System.Diagnostics.Process.Start(dialog.FileName);
}
}
dgvVenta.Rows.Clear();
txbNombre.Texts = "";
CalcularTotal();
ClearProducts();
txbPaga.Text = "";
132

txbCambio.Texts = "";
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

}
}
}
133

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMHISTORIALVENTA.CS
using Microsoft.VisualStudio.Utilities.Internal;
using Org.BouncyCastle.Math.EC.Multiplier;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using iTextSharp.tool.xml;
using iTextSharp.text;
using iTextSharp.text.pdf;
using Ingenieros_Commerce_Manager_v2._0.Entities;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormHistorialVenta : Form
{
public FormHistorialVenta()
{
InitializeComponent();
}
//Instancia de clase
conexionsql sql = new conexionsql();
DataTable DTVentas = new DataTable();
DataTable InfoVentas = new DataTable();

private void FormHistorialVenta_Load(object sender, EventArgs e)


{
DTVentas = sql.GetVentas();
dgvVentas.Rows.Clear();
foreach (DataRow dr in DTVentas.Rows)
{
dgvVentas.Rows.Add(new object[]
{
dr["IdVenta"],
dr["Cliente"],
dr["TipoDocumento"],
dr["Fecha"],
dr["Importe"],
dr["Envio"]
134

});
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

foreach(DataGridViewColumn column in dgvVentas.Columns)


{
if (column.HeaderText != "Facturación")
cmbBusqueda.Items.Add(column.Name);
}
cmbBusqueda.Texts = "IdVentas";
}

private void dgvVentas_CellContentClick(object sender,


DataGridViewCellEventArgs e)
{
if (dgvVentas.Columns[e.ColumnIndex].Name == "Facturacion")
{
int index = e.RowIndex;
if (index >= 0)
{
SaveFileDialog dialog = new SaveFileDialog();

dialog.FileName = DateTime.Now.ToString("ddMMyyyyHHmmss")
+ ".pdf";
dialog.AddExtension = true;
dialog.DefaultExt = "pdf";
dialog.RestoreDirectory = true;

sql.SetCliente(int.Parse(DTVentas.Rows[index]["ID.CLI"].ToString()));
string txthtml =
Properties.Resources.Plantilla.ToString();
txthtml = txthtml.Replace("@DENOMINACION",
Usuario.Denominacion);
txthtml = txthtml.Replace("@DIRECCION",
Usuario.Direccion);
txthtml = txthtml.Replace("@TELEFONO", Usuario.Telefono);
txthtml = txthtml.Replace("@RUT", Usuario.RUT);
txthtml = txthtml.Replace("@TIPODOCUMENTO",
dgvVentas.Rows[index].Cells["TipoDocumento"].Value.ToString());
txthtml = txthtml.Replace("@IDVENTA",
int.Parse(dgvVentas.Rows[index].Cells["IdVentas"].Value.ToString()).ToString("
000000"));
txthtml = txthtml.Replace("@FECHA",
dgvVentas.Rows[index].Cells["Fecha"].Value.ToString());
txthtml = txthtml.Replace("@TOTAL",
dgvVentas.Rows[index].Cells["Importe"].Value.ToString());
txthtml = txthtml.Replace("@CLIENTE",
dgvVentas.Rows[index].Cells["Cliente"].Value.ToString());
135

txthtml = txthtml.Replace("@DIRCLI",
Entities.Cliente.Direccion);

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

string filas = string.Empty;


InfoVentas =
sql.GetInfoVentas(int.Parse(dgvVentas.Rows[index].Cells["IdVentas"].Value.ToSt
ring()));
foreach(DataRow row in InfoVentas.Rows)
{
filas += "<tr>";
filas += "<td>" + row["Cantidad"].ToString() +
"</td>";
filas += "<td>" + row["Producto"].ToString() +
"</td>";
filas += "<td>" + row["Precio"].ToString() + "</td>";
filas += "<td>" + row["SubTotal"].ToString() +
"</td>";
filas += "</tr>";
}
txthtml = txthtml.Replace("@FILAS", filas);

if (dialog.ShowDialog() == DialogResult.OK)
{
using (FileStream fs = new FileStream(dialog.FileName,
FileMode.Create))
{
Document pdf = new Document(PageSize.A4, 25, 25,
25, 25);
PdfWriter writer = PdfWriter.GetInstance(pdf, fs);
pdf.Open();
pdf.Add(new Phrase(""));

if(Usuario.Foto != null)
{
System.Drawing.Image img =
System.Drawing.Image.FromStream(Usuario.ByteToImage(Usuario.Foto));
var format = img.RawFormat;
iTextSharp.text.Image image =
iTextSharp.text.Image.GetInstance(img, format);
image.ScaleToFit(80, 80);
image.Alignment =
iTextSharp.text.Image.UNDERLYING;
image.SetAbsolutePosition(pdf.LeftMargin,
pdf.Top - 80);
pdf.Add(image);
}
136

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

using (StringReader sr = new


StringReader(txthtml))
{

XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdf, sr);


}
pdf.Close();
fs.Close();
}
System.Diagnostics.Process.Start(dialog.FileName);
}

}
}
}

private void btnClear_Click(object sender, EventArgs e)


{
txbBuscar.Texts = "";
foreach (DataGridViewRow row in dgvVentas.Rows)
{
row.Visible = true;
}
cmbBusqueda.Texts = "";
}

private void txbBuscar__TextChanged(object sender, EventArgs e)


{
string Filter = cmbBusqueda.Texts;
if (dgvVentas.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
foreach (DataGridViewRow row in dgvVentas.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
137

else
{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

row.Visible = false;
}
}
}
}
}

private void btnRefresh_Click(object sender, EventArgs e)


{
DTVentas = sql.GetVentas();
dgvVentas.Rows.Clear();
foreach (DataRow dr in DTVentas.Rows)
{
dgvVentas.Rows.Add(new object[]
{
dr["IdVenta"],
dr["Cliente"],
dr["TipoDocumento"],
dr["Fecha"],
dr["Importe"],
dr["Envio"]
});
}
}
}
}
138

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMBUSCARCLIENTE.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Ingenieros_Commerce_Manager_v2._0.Entities;
using Microsoft.VisualStudio.Utilities.Internal;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormBuscarCliente : Form
{
public FormBuscarCliente()
{
InitializeComponent();

}
//Instancia de clase
conexionsql sql = new conexionsql();

private void FormBuscarCliente_Load(object sender, EventArgs e)


{
try
{
dgvCliente.DataSource = sql.GetClientes();

}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

foreach(DataGridViewColumn column in dgvCliente.Columns)


{
cmbBusqueda.Items.Add(column.HeaderText);
}
cmbBusqueda.Texts = "Nombre";
}
private void SetCliente()
139

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Cliente.IDCLI =
int.Parse(dgvCliente.CurrentRow.Cells["ID.CLI"].Value.ToString());
Cliente.Saldo =
float.Parse(dgvCliente.CurrentRow.Cells["Saldo"].Value.ToString());
Cliente.Telefono =
dgvCliente.CurrentRow.Cells["Telefono"].Value.ToString();
Cliente.Direccion =
dgvCliente.CurrentRow.Cells["Direccion"].Value.ToString();
Cliente.Nombre =
dgvCliente.CurrentRow.Cells["Nombre"].Value.ToString();
}

private void dgvCliente_CellDoubleClick(object sender,


DataGridViewCellEventArgs e)
{
if(e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
SetCliente();
this.Close();
}
else
{
MessageBox.Show("Seleccione un cliente.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void btnSelect_Click(object sender, EventArgs e)


{
if(dgvCliente.SelectedRows.Count > 0)
{
SetCliente();
this.Close();
}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void btnCancel_Click(object sender, EventArgs e)


{
Cliente.ClearClientData();
this.Close();
}
140

private void btnClear_Click(object sender, EventArgs e)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
txbBuscar.Texts = "";
foreach (DataGridViewRow row in dgvCliente.Rows)
{
row.Visible = true;
}
cmbBusqueda.Texts = "";
}

private void txbBuscar__TextChanged(object sender, EventArgs e)


{
CurrencyManager manager =
(CurrencyManager)dgvCliente.BindingContext[dgvCliente.DataSource];
manager.SuspendBinding();
string Filter = cmbBusqueda.Texts;
if (dgvCliente.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
foreach (DataGridViewRow row in dgvCliente.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
else
{
row.Visible = false;
}
}
}
}
manager.ResumeBinding();
}
}
}
141

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMBUSCARPROD.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Ingenieros_Commerce_Manager_v2._0.Entities;
using Microsoft.VisualStudio.Utilities.Internal;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormBuscarProd : Form
{
public FormBuscarProd()
{
InitializeComponent();
}
//Instancia de clase
conexionsql sql = new conexionsql();

private void SetProducto()


{
Producto.IDPROD =
int.Parse(dgvProducto.CurrentRow.Cells["ID.Prod"].Value.ToString());
Producto.Descripcion =
dgvProducto.CurrentRow.Cells["Descripcion"].Value.ToString();
Producto.PrecioUnitario =
float.Parse(dgvProducto.CurrentRow.Cells["PrecioUnitario"].Value.ToString());
Producto.Stock =
float.Parse(dgvProducto.CurrentRow.Cells["Stock"].Value.ToString());
}
private void FormBuscarProd_Load(object sender, EventArgs e)
{
try
{
dgvProducto.DataSource = sql.MostrarDTProd();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
142

MessageBoxButtons.OK, MessageBoxIcon.Error);
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

foreach (DataGridViewColumn column in dgvProducto.Columns)


{
cmbBusqueda.Items.Add(column.HeaderText);
}
cmbBusqueda.Texts = "Descripcion";
}

private void dgvProducto_CellDoubleClick(object sender,


DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
SetProducto();
this.Close();
}
else
{
MessageBox.Show("Seleccione un cliente.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void btnSelect_Click(object sender, EventArgs e)


{
if (dgvProducto.SelectedRows.Count > 0)
{
SetProducto();
this.Close();
}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void btnCancel_Click(object sender, EventArgs e)


{
Producto.ClearProductData();
this.Close();
}

private void btnClear_Click(object sender, EventArgs e)


{
txbBuscar.Texts = "";
143

foreach (DataGridViewRow row in dgvProducto.Rows)


{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

row.Visible = true;
}
cmbBusqueda.Texts = "";
}

private void txbBuscar__TextChanged(object sender, EventArgs e)


{
CurrencyManager manager =
(CurrencyManager)dgvProducto.BindingContext[dgvProducto.DataSource];
manager.SuspendBinding();
string Filter = cmbBusqueda.Texts;
if (dgvProducto.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
foreach (DataGridViewRow row in dgvProducto.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
else
{
row.Visible = false;
}
}
}
}
manager.ResumeBinding();
}
}
}
144

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMCALCULARCOSTO.CS
using Ingenieros_Commerce_Manager_v2._0.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormCalcularCosto : Form
{
public FormCalcularCosto()
{
InitializeComponent();
}
//Instancia de clase
conexionsql sql = new conexionsql();

float costonuevo;

private void btnUp_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbCantidad.Texts = "0";
txbCantidad.Select();
return;
}
txbCantidad.Texts = (num + 1).ToString();
txbCantidad.Select();
}

private void btnDown_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
145

txbCantidad.Texts = "0";
txbCantidad.Select();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

return;
}
txbCantidad.Texts = (num - 1).ToString();
txbCantidad.Select();
}

private void FormCalcularCosto_Load(object sender, EventArgs e)


{
lblID.Text = Producto.IDPROD.ToString();
txbDescrip.Texts = Producto.Descripcion;
txbStock.Texts = Producto.Stock.ToString();
txbPrecio.Texts = Producto.PrecioUnitario.ToString();
txbCostoActual.Texts = Producto.CostoUnitario.ToString();
txbCantidad.Select();
}

private void btnAceptar_Click(object sender, EventArgs e)


{
Producto.CostoUnitario = costonuevo;
try
{
if (sql.InsertarCostoProd(float.Parse(txbCantidad.Texts),
btnGenerar.Checked, float.Parse(txbCostoProduccion.Texts)) > 0)
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.Abort;
}
}
catch
{
this.DialogResult = DialogResult.Abort;
}
this.Close();
this.Dispose();
}

private void btnCancel_Click(object sender, EventArgs e)


{
Producto.ClearProductData();
this.DialogResult = DialogResult.Cancel;
this.Close();
this.Dispose();
}
146

private void btnCalcular_Click(object sender, EventArgs e)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
if (!float.TryParse(txbCantidad.Texts, out float cantidad) |
!float.TryParse(txbCostoProduccion.Texts, out float costo))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
costonuevo = costo / cantidad;
lblCostoCalculado.Text = "Costo calculado:" + costonuevo;
}
}
}
}
147

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMCLIENTES.CS
using Microsoft.VisualStudio.Utilities.Internal;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormClientes : Form
{
public FormClientes()
{
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}

//Instancia de clase
conexionsql sql = new conexionsql();
//Variables;
bool editar;
string id;
public void ClearTextBoxs()
{
customTextBoxNombre.Texts = "";
customTextBoxDireccion.Texts = "";
customTextBoxTelefono.Texts = "";
customTextBoxSaldo.Texts = "";
}
private void FormClientes_Load(object sender, EventArgs e)
{
try
{
dgvClientes.DataSource = sql.GetClientes();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
148

MessageBoxButtons.OK, MessageBoxIcon.Error);
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

foreach (DataGridViewColumn column in dgvClientes.Columns)


{
cmbBusqueda.Items.Add(column.HeaderText);
}
cmbBusqueda.Texts = "Nombre";
}

private void rjButtonIngresar_Click(object sender, EventArgs e)


{
if (customTextBoxNombre.Texts.Trim() != "" &&
customTextBoxDireccion.Texts.Trim() != "" &&
customTextBoxTelefono.Texts.Trim() != "" && customTextBoxSaldo.Texts.Trim() !=
"")
{

try
{
if (editar == true)
{
sql.ActualizarCliente(customTextBoxNombre.Texts,
customTextBoxDireccion.Texts, customTextBoxTelefono.Texts,
float.Parse(customTextBoxSaldo.Texts), id);
editar = false;
}
else
{
sql.InsertarCliente(customTextBoxNombre.Texts,
customTextBoxDireccion.Texts, customTextBoxTelefono.Texts,
float.Parse(customTextBoxSaldo.Texts));
}
dgvClientes.DataSource = sql.GetClientes();
MessageBox.Show("Datos ingresados correctamente",
"Acción realizada", MessageBoxButtons.OK, MessageBoxIcon.Information);
ClearTextBoxs();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Debe completar todos los campos", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
149

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void dgvClientes_Click(object sender, EventArgs e)


{
if (dgvClientes.SelectedRows.Count > 0)
{
if (id == null)
{
id =
dgvClientes.CurrentRow.Cells["ID.CLI"].Value.ToString();

}
else if
(!(id.Contains(dgvClientes.CurrentRow.Cells["ID.CLI"].Value.ToString())))
{
id = id + ", " +
dgvClientes.CurrentRow.Cells["ID.CLI"].Value.ToString();
}

}
}

private void rjButtonEditar_Click(object sender, EventArgs e)


{
if (dgvClientes.SelectedRows.Count > 0)
{

customTextBoxNombre.Texts =
dgvClientes.CurrentRow.Cells["Nombre"].Value.ToString();
customTextBoxDireccion.Texts =
dgvClientes.CurrentRow.Cells["Direccion"].Value.ToString();
customTextBoxTelefono.Texts =
dgvClientes.CurrentRow.Cells["Telefono"].Value.ToString();
customTextBoxSaldo.Texts =
dgvClientes.CurrentRow.Cells["Saldo"].Value.ToString();
editar = true;

}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void rjButtonEliminar_Click(object sender, EventArgs e)


150

{
if (dgvClientes.SelectedRows.Count > 0)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
var respuesta = MessageBox.Show("¿Desea eliminar los elementos
seleccionados? Esta acción no puede revertirse", "Advertencia",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (respuesta == DialogResult.Yes)
{

try
{
sql.EliminarCliente(int.Parse(id));

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
dgvClientes.DataSource = sql.GetClientes();
ClearTextBoxs();

private void btnDeseleccionar_Click(object sender, EventArgs e)


{
dgvClientes.ClearSelection();
ClearTextBoxs();
id = null;
}

private void btnClear_Click(object sender, EventArgs e)


{
txbBuscar.Texts = "";
foreach (DataGridViewRow row in dgvClientes.Rows)
{
row.Visible = true;
}
cmbBusqueda.Texts = "";
}
151

private void txbBuscar__TextChanged(object sender, EventArgs e)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
CurrencyManager manager =
(CurrencyManager)dgvClientes.BindingContext[dgvClientes.DataSource];
manager.SuspendBinding();
string Filter = cmbBusqueda.Texts;
if (dgvClientes.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
foreach (DataGridViewRow row in dgvClientes.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
else
{
row.Visible = false;
}
}
}
}
manager.ResumeBinding();
}

private void btnRefresh_Click(object sender, EventArgs e)


{
try
{
dgvClientes.DataSource = sql.GetClientes();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
152

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMGASTOS.CS
using Microsoft.VisualStudio.Utilities.Internal;
using System;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormGastos : Form
{
public FormGastos()
{
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
//Instancia de clase
Module module = new Module();
//Conexion SQL
conexionsql sql = new conexionsql();
//Variables;
bool editar;
string id;
//Método borrar textboxs
public void ClearTextBoxs()
{
txbValorGastos.Texts = "";
txbConceptoGastos.Texts = "";
txbFechaGastos.Texts = "";
}
private void FormGastos_Load(object sender, EventArgs e)
{
txbFechaGastos.Texts = DateTime.Now.ToString("dd/MM/yyyy");
try
{
dgvGastos.DataSource = sql.GetGastos();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
foreach (DataGridViewColumn column in dgvGastos.Columns)
{
cmbBusqueda.Items.Add(column.HeaderText);
153

}
cmbBusqueda.Texts = "Concepto";

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void btnIngresoGastos_Click(object sender, EventArgs e)


{
if (txbValorGastos.Texts.Trim() != "" &&
txbFechaGastos.Texts.Trim() != "" && txbConceptoGastos.Texts.Trim() != "")
{

try
{
if (editar == true)
{
sql.ActualizarGasto(txbValorGastos.Texts,
txbFechaGastos.Texts, txbConceptoGastos.Texts, cmbTipo.Texts, id);
editar = false;
}
else
{
sql.InsertarGasto(txbValorGastos.Texts,
txbFechaGastos.Texts, txbConceptoGastos.Texts, cmbTipo.Texts);
}
dgvGastos.DataSource = sql.GetGastos();
MessageBox.Show("Datos ingresados correctamente", "Acción
realizada", MessageBoxButtons.OK, MessageBoxIcon.Information);
ClearTextBoxs();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Debe completar todos los campos", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnEditarGastos_Click(object sender, EventArgs e)


{
if (dgvGastos.SelectedRows.Count > 0)
{

txbConceptoGastos.Texts =
154

dgvGastos.CurrentRow.Cells["Concepto"].Value.ToString();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

txbFechaGastos.Texts =
dgvGastos.CurrentRow.Cells["Fecha"].Value.ToString();
txbValorGastos.Texts =
dgvGastos.CurrentRow.Cells["Valor"].Value.ToString();
cmbTipo.Texts =
dgvGastos.CurrentRow.Cells["Tipo"].Value.ToString();
editar = true;

}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnEliminarGastos_Click(object sender, EventArgs e)


{
if (dgvGastos.SelectedRows.Count > 0)
{
var respuesta = MessageBox.Show("¿Desea eliminar los elementos
seleccionados? Esta acción no puede revertirse", "Advertencia",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (respuesta == DialogResult.Yes)
{

try
{
sql.EliminarGasto(int.Parse(id));

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
}
else
{
MessageBox.Show("Seleccione una fila.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
dgvGastos.DataSource = sql.GetGastos();
ClearTextBoxs();
155

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void dgvGastos_Click(object sender, EventArgs e)


{
if (dgvGastos.SelectedRows.Count > 0)
{
if (id == null)
{
id =
dgvGastos.CurrentRow.Cells["IdGasto"].Value.ToString();

}
else if
(!(id.Contains(dgvGastos.CurrentRow.Cells["IdGasto"].Value.ToString())))
{
id = id + ", " +
dgvGastos.CurrentRow.Cells["IdGasto"].Value.ToString();
}

}
}

private void dtpFecha_ValueChanged(object sender, EventArgs e)


{
txbFechaGastos.Texts = dtpFecha.Value.ToString("dd/MM/yyyy");
txbFechaGastos.Select();
}

private void btnDeseleccionar_Click(object sender, EventArgs e)


{
dgvGastos.ClearSelection();
id = null;
ClearTextBoxs();
}

private void btnClear_Click(object sender, EventArgs e)


{
txbBuscar.Texts = "";
foreach (DataGridViewRow row in dgvGastos.Rows)
{
row.Visible = true;
}
cmbBusqueda.Texts = "";
}

private void txbBuscar__TextChanged(object sender, EventArgs e)


{
CurrencyManager manager =
156

(CurrencyManager)dgvGastos.BindingContext[dgvGastos.DataSource];
manager.SuspendBinding();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

string Filter = cmbBusqueda.Texts;


if (dgvGastos.Rows.Count > 0)
{
if (Filter.IsNullOrWhiteSpace() == true)
{
MessageBox.Show("Seleccione un criterio de búsqueda.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
foreach (DataGridViewRow row in dgvGastos.Rows)
{
if
(row.Cells[Filter].Value.ToString().Trim().ToLower().Contains(txbBuscar.Texts.
Trim().ToLower()))
{
row.Visible = true;
}
else
{
row.Visible = false;
}
}
}
}
manager.ResumeBinding();
}

private void btnDown_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbValorGastos.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbValorGastos.Texts = "0";
txbValorGastos.Select();
return;
}
txbValorGastos.Texts = (num - 1).ToString();
txbValorGastos.Select();
}

private void btnUp_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbValorGastos.Texts, out float num))
{
157

MessageBox.Show("Formato incorrecto", "Error",


MessageBoxButtons.OK, MessageBoxIcon.Error);

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

txbValorGastos.Texts = "0";
txbValorGastos.Select();
return;
}
txbValorGastos.Texts = (num + 1).ToString();
txbValorGastos.Select();

private void btnRefresh_Click(object sender, EventArgs e)


{
try
{
dgvGastos.DataSource = sql.GetGastos();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error al conectar",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
158

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMRESUMEN.CS
using Microsoft.Build.Framework;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormResumen : Form
{
private ResumenData model;

public FormResumen()
{
InitializeComponent();
dtpFechaInicio.Value = DateTime.Now.AddDays(-7);
dtpFechaFin.Value = DateTime.Now;
btn7dias.Select();

model = new ResumenData();


LoadData(dtpFechaInicio.Value, dtpFechaFin.Value);
}

private void LoadData(DateTime FechaInicio, DateTime FechaFin)


{
var refreshData = model.LoadData(FechaInicio, FechaFin);
if (refreshData)
{
lblVentas.Text = "0" + model.NumVentas.ToString();
lblIngresos.Text = "$" + model.TotalIngresos.ToString();
lblGastos.Text = "$" + model.TotalGastos.ToString();
lblGanancias.Text = "$" + model.TotalGanancias.ToString();

lblNroClientes.Text = "Nº de Clientes:\n" +


model.NumClientes.ToString();
lblNroProd.Text = "Nº de Productos:\n" +
159

model.NumProductos.ToString();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

lblNroMatPrim.Text = "Nº de Materias Primas:\n" +


model.NumMatPrims.ToString();

chartIngresos.DataSource = model.IngresosBrutos;
chartIngresos.Series[0].XValueMember = "Fecha";
chartIngresos.Series[0].YValueMembers = "Monto";
chartIngresos.DataBind();

chartGastos.DataSource = model.GastosXFecha;
chartGastos.Series[0].XValueMember = "Fecha";
chartGastos.Series[0].YValueMembers = "Monto";
chartGastos.DataBind();

chartGananciasProds.DataSource = model.GananciaXProducto;
chartGananciasProds.Series[0].XValueMember = "Key";
chartGananciasProds.Series[0].YValueMembers = "Value";
chartGananciasProds.DataBind();

chartProds.DataSource = model.ProductosMasVendidos;
chartProds.Series[0].XValueMember = "Key";
chartProds.Series[0].YValueMembers = "Value";
chartProds.DataBind();

dgvBajoStock.DataSource = model.ProductosBajoStock;
dgvBajoStock.Columns["Key"].HeaderText = "Producto";
dgvBajoStock.Columns["Value"].HeaderText = "Cantidad";
Console.WriteLine("Vista cargada");
dgvBajoStock.ClearSelection();
}
else
{
Console.WriteLine("Vista no cargada");

}
}

private void btnHoy_Click(object sender, EventArgs e)


{
dtpFechaInicio.Value = DateTime.Now;
dtpFechaFin.Value = DateTime.Now;
LoadData(DateTime.Today, DateTime.Today);
}

private void btn7dias_Click(object sender, EventArgs e)


{
dtpFechaInicio.Value = DateTime.Now.AddDays(-7);
160

dtpFechaFin.Value = DateTime.Now;
LoadData(DateTime.Now.AddDays(-7), DateTime.Now);

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void btn30dias_Click(object sender, EventArgs e)


{
dtpFechaInicio.Value = DateTime.Now.AddDays(-30);
dtpFechaFin.Value = DateTime.Now;
LoadData(DateTime.Now.AddDays(-30), DateTime.Now);
}

private void btnMes_Click(object sender, EventArgs e)


{
dtpFechaInicio.Value = new DateTime(DateTime.Today.Year,
DateTime.Today.Month, 1);
dtpFechaFin.Value = DateTime.Now;
LoadData(dtpFechaInicio.Value, dtpFechaFin.Value);
}

private void btnOKFecha_Click(object sender, EventArgs e)


{
LoadData(dtpFechaInicio.Value, dtpFechaFin.Value);
}

private void FormResumen_Load(object sender, EventArgs e)


{
dgvBajoStock.ClearSelection();
}
}
}
161

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMSEGURIDAD.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormSeguridad : Form
{
public FormSeguridad()
{
InitializeComponent();
}
SecurityCheck check = new SecurityCheck();
private void btnAceptar_Click(object sender, EventArgs e)
{
if (check.CheckPasswd(txbContra.Texts))
{
this.DialogResult = DialogResult.OK;
txbContra.Texts = "";
this.Close();
}
else
{
MessageBox.Show("Contraseña incorrecta.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnCancelar_Click(object sender, EventArgs e)


{
this.DialogResult=DialogResult.Cancel;
this.Close();
}

private void btnPWDChar_Click(object sender, EventArgs e)


{
if (txbContra.PasswordChar == true )
{
162

txbContra.PasswordChar = false;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnPWDChar.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.hidepwd;
}
else
{
txbContra.PasswordChar = true;
btnPWDChar.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.showpwd;
}
}
}
}
163

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMSOPORTE.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormSoporte : Form
{
public FormSoporte()
{
InitializeComponent();
}

conexionsql sql = new conexionsql();


private void label1_Click(object sender, EventArgs e)
{

private void label10_Click(object sender, EventArgs e)


{

private void linkLabel1_LinkClicked(object sender,


System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.Link.LinkData.ToString());
}

private void FormSoporte_Load(object sender, EventArgs e)


{
linkLabel1.Links.Add(0, 0, "mailto:ingenierossoftware@gmail.com");
}
}
}
FORMUSARMATPRIM.CS
164

using Ingenieros_Commerce_Manager_v2._0.Entities;
using System;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormUsarMatPrim : Form
{
public FormUsarMatPrim()
{
InitializeComponent();
}
conexionsql sql = new conexionsql();
Module module = new Module();

private void btnDown_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbCantidad.Texts = "0";
txbCantidad.Select();
return;
}
txbCantidad.Texts = (num - 1).ToString();
txbCantidad.Select();
}

private void btnUp_Click(object sender, EventArgs e)


{
if (!float.TryParse(txbCantidad.Texts, out float num))
{
MessageBox.Show("Formato incorrecto", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txbCantidad.Texts = "0";
txbCantidad.Select();
return;
}
txbCantidad.Texts = (num + 1).ToString();
txbCantidad.Select();
165

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

private void dtpFecha_ValueChanged(object sender, EventArgs e)


{
txbFecha.Texts = dtpFecha.Value.ToString("dd/MM/yyyy");
txbFecha.Select();
}

private void FormUsarMatPrim_Load(object sender, EventArgs e)


{
txbFecha.Texts = DateTime.Now.ToString("dd/MM/yyyy");
txbCantidad.Texts = "0";
txbCantidad.Select();
txbCosto.Texts = MateriaPrima.Costo.ToString();
txbDescrip.Texts = MateriaPrima.Descripcion;
txbStock.Texts = MateriaPrima.Stock.ToString();
lblID.Text = MateriaPrima.Id.ToString();
}

private void btnAceptar_Click(object sender, EventArgs e)


{
if(txbFecha.Texts.Trim() == "" | txbCantidad.Texts.Trim() == "")
{
MessageBox.Show("Complete TODOS los campos de texto.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if(txbCantidad.Texts.Trim() == "0" |
float.Parse(txbCantidad.Texts) > MateriaPrima.Stock)
{
MessageBox.Show("Cantidad inválida.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
sql.UsarMatPrim(MateriaPrima.Id, txbFecha.Texts,
float.Parse(txbCantidad.Texts));
MateriaPrima.ClearMatData();
this.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
166

private void btnCancel_Click(object sender, EventArgs e)


{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MateriaPrima.ClearMatData();
this.Close();
}
}
}
167

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMUSUARIO.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using Ingenieros_Commerce_Manager_v2._0.Entities;

namespace Ingenieros_Commerce_Manager_v2._0
{
public partial class FormUsuario : Form
{
public FormUsuario()
{
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}

//Instancia de clase
conexionsql sql = new conexionsql();
private void btnInfo_Click(object sender, EventArgs e)
{
MessageBox.Show("Esta información será incluida en la facturación
generada por el sistema.", "Información", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
private void UpdateForm()
{
txbUsername.Texts = Usuario.Username;
txbDenom.Texts = Usuario.Denominacion;
txbRUT.Texts = Usuario.RUT;
txbTel.Texts = Usuario.Telefono;
txbDir.Texts = Usuario.Direccion;
if (Usuario.Foto != null)
{
ImgUser.Image =
Image.FromStream(Usuario.ByteToImage(Usuario.Foto));
}
168

else
{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ImgUser.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.galeria;
}
txbClaveActual.Texts = "";
txbClaveNueva.Texts = "";

private void FormUsuario_Load(object sender, EventArgs e)


{
sql.SetUserData(Usuario.Id);
UpdateForm();
lblUserID.Text = lblUserID.Text + " " + Usuario.Id;
}

private void tbtnCambioClave_CheckedChanged(object sender, EventArgs


e)
{
if (tbtnCambioClave.Checked == true)
{
label6.Visible = true;
txbClaveNueva.Visible = true;
}
else if (tbtnCambioClave.Checked == false)
{
label6.Visible = false;
txbClaveNueva.Visible = false;
}
}

private void btnLogout_Click(object sender, EventArgs e)


{
Usuario.ClearData();
UpdateForm();
sql.CerrarConexion();
Module.formInicio.Show();
Module.formContenedor.Dispose();
this.Dispose();

private void btnPWDChar_Click(object sender, EventArgs e)


{
if(txbClaveActual.PasswordChar == true &&
txbClaveNueva.PasswordChar == true)
{
169

txbClaveActual.PasswordChar = false;
txbClaveNueva.PasswordChar = false;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

btnPWDChar.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.hidepwd;
}
else
{
txbClaveActual.PasswordChar = true;
txbClaveNueva.PasswordChar = true;
btnPWDChar.Image =
Ingenieros_Commerce_Manager_v2._0.Properties.Resources.showpwd;
}
}

private void btnSaveChange_Click(object sender, EventArgs e)


{
if (txbClaveActual.Texts.Length == 0)
{
MessageBox.Show("Ingrese su contraseña para validar los
cambios.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (txbClaveActual.Texts != Usuario.Password)
{
MessageBox.Show("Contraseña incorrecta.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
if (tbtnCambioClave.Checked == true &&
txbClaveNueva.Texts.Trim() != "")
{
sql.UpdateUser(
txbUsername.Texts,
txbClaveNueva.Texts,
txbDenom.Texts,
txbRUT.Texts,
txbDir.Texts,
txbTel.Texts,
Usuario.Id
);
sql.SetUserData(Usuario.Id);
MessageBox.Show("Datos actualizados
correctamente.", "Acción realizada", MessageBoxButtons.OK,
MessageBoxIcon.Information);
170

UpdateForm();
}

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

else if (tbtnCambioClave.Checked == false)


{
sql.UpdateUser(
txbUsername.Texts,
Usuario.Password,
txbDenom.Texts,
txbRUT.Texts,
txbDir.Texts,
txbTel.Texts,
Usuario.Id
);
sql.SetUserData(Usuario.Id);
MessageBox.Show("Datos actualizados
correctamente.", "Acción realizada", MessageBoxButtons.OK,
MessageBoxIcon.Information);
UpdateForm();
}
else if (txbClaveNueva.Texts.Trim() == "")
{
MessageBox.Show("Complete los campos de
contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

private void btnModify_Click(object sender, EventArgs e)


{
if (ImgSelect.ShowDialog() == DialogResult.OK)
{
try
{
byte[] img = File.ReadAllBytes(ImgSelect.FileName);
sql.SetUserImg(img, Usuario.Id);
ImgUser.Image =
Image.FromStream(Usuario.ByteToImage(img));
Usuario.Foto = img;
MessageBox.Show("Logo modificado correctamente.", "Acción
completada", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
171

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MessageBox.Show(ex.ToString(), "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

private void lblSoporte_Click(object sender, EventArgs e)


{
Form formsoporte = new FormSoporte();
}

private void rjButton1_Click(object sender, EventArgs e)


{
Form formsoporte = new FormSoporte();
formsoporte.Show();
}
}
}
172

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

RESUMENDATA.CS
using Ingenieros_Commerce_Manager_v2._0.Entities;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Reflection;

namespace Ingenieros_Commerce_Manager_v2._0
{
public struct IngresosXFecha
{
public string Fecha { get; set; }
public float Monto { get; set; }
}
public class ResumenData : conexionsql
{

private DateTime FechaInicio, FechaFin;


private int NroDias;

public int NumClientes { get; private set; }


public int NumProductos { get; private set; }
public int NumMatPrims { get; private set; }
public List<KeyValuePair<string, float>> ProductosMasVendidos { get;
private set; }
public List<KeyValuePair<string, float>> ProductosBajoStock { get;
private set; }
public List<KeyValuePair<string, float>> GananciaXProducto { get;
private set; }
public List<IngresosXFecha> IngresosBrutos { get; private set; }
public List<IngresosXFecha> GastosXFecha { get; private set; }
public int NumVentas { get; private set; }
public float TotalIngresos { get; private set; }
public float TotalGanancias { get; private set; }
public float TotalGastos { get; private set; }

private void GetNroItems()


{
using (var conexion = GetMySqlConnection())
{
conexion.Open();
using (var cmd = new MySqlCommand())
173

{
cmd.Connection = conexion;

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

//Obtiene el total de clientes


cmd.CommandText = "SELECT COUNT(`ID.CLI`) FROM `cliente`
WHERE `IdUsuario` = '" + Usuario.Id + "';";
NumClientes = int.Parse(cmd.ExecuteScalar().ToString());
//Obtiene el total de Productos
cmd.CommandText = "SELECT COUNT(`ID.Prod`) FROM
`producto_venta` WHERE `IdUsuario` = '" + Usuario.Id + "';";
NumProductos = int.Parse(cmd.ExecuteScalar().ToString());
//Obtiene el total de materias primas
cmd.CommandText = "SELECT COUNT(`ID.Mat`) FROM
`materia_prima` WHERE `IdUsuario` = '" + Usuario.Id + "';";
NumMatPrims = int.Parse(cmd.ExecuteScalar().ToString());
//Obtiene el total de ventas
cmd.CommandText = "SELECT COUNT(`IdVenta`) FROM `venta`
WHERE `IdUsuario` = '" + Usuario.Id + "' AND Fecha BETWEEN @fromDate AND
@toDate;";
cmd.Parameters.Add("@fromDate", MySqlDbType.Date).Value =
FechaInicio;
cmd.Parameters.Add("@toDate", MySqlDbType.Date).Value =
FechaFin;
NumVentas = int.Parse(cmd.ExecuteScalar().ToString());
}
}
}
private void GetAnalisisVentas()
{
IngresosBrutos = new List<IngresosXFecha>();
GastosXFecha = new List<IngresosXFecha>();
TotalGanancias = 0;
TotalIngresos = 0;
TotalGastos = 0;
using (var conexion = GetMySqlConnection())
{
conexion.Open();
using (var cmd = new MySqlCommand())
{
//Obtiene los ingresos
cmd.Connection = conexion;
cmd.CommandText = "SELECT Fecha, SUM(Importe) Total FROM
`venta` WHERE `IdUsuario` = '" + Usuario.Id + "' AND Fecha BETWEEN @fromDate
AND @toDate GROUP BY Fecha;";
cmd.Parameters.Add("@fromDate", MySqlDbType.Date).Value =
FechaInicio;
cmd.Parameters.Add("@toDate", MySqlDbType.Date).Value =
FechaFin;
var reader = cmd.ExecuteReader();
174

var ListaResultadosVentas = new


List<KeyValuePair<DateTime, float>>();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

while (reader.Read())
{
ListaResultadosVentas.Add(new KeyValuePair<DateTime,
float>((DateTime)reader[0], float.Parse(reader[1].ToString())));
TotalIngresos += float.Parse(reader[1].ToString());
}
reader.Close();
reader.Dispose();
cmd.Parameters.Clear();

//Obtiene los gastos


cmd.Connection = conexion;
cmd.CommandText = "SELECT Fecha, SUM(Valor) Total FROM
`gasto` WHERE `IdUsuario` = '" + Usuario.Id + "' AND Fecha BETWEEN @fromDate
AND @toDate GROUP BY Fecha;";
cmd.Parameters.Add("@fromDate", MySqlDbType.Date).Value =
FechaInicio;
cmd.Parameters.Add("@toDate", MySqlDbType.Date).Value =
FechaFin;
reader = cmd.ExecuteReader();
var ListaResultadosGastos = new
List<KeyValuePair<DateTime, float>>();
while (reader.Read())
{
ListaResultadosGastos.Add(new KeyValuePair<DateTime,
float>((DateTime)reader[0], float.Parse(reader[1].ToString())));
TotalGastos += float.Parse(reader[1].ToString());
}
reader.Close();
reader.Dispose();
cmd.Parameters.Clear();

TotalGanancias = TotalIngresos - TotalGastos;

if(NroDias <= 30)


{
foreach(var item in ListaResultadosVentas)
{
IngresosBrutos.Add(new IngresosXFecha()
{
Fecha = item.Key.ToString("dd MMM yyyy"),
Monto = item.Value
});

}
foreach (var item in ListaResultadosGastos)
175

{
GastosXFecha.Add(new IngresosXFecha()

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
Fecha = item.Key.ToString("dd MMM yyyy"),
Monto = item.Value
});

}
else if(NroDias <= 92)
{
IngresosBrutos = (from orderList in
ListaResultadosVentas
group orderList by
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
orderList.Key,
CalendarWeekRule.FirstDay, DayOfWeek.Monday)
into order
select new IngresosXFecha
{
Fecha = "Semana "+
order.Key.ToString(),
Monto = order.Sum(amount =>
amount.Value)
}).ToList();
GastosXFecha = (from orderList in
ListaResultadosGastos
group orderList by
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
orderList.Key,
CalendarWeekRule.FirstDay, DayOfWeek.Monday)
into order
select new IngresosXFecha
{
Fecha = "Semana " +
order.Key.ToString(),
Monto = order.Sum(amount =>
amount.Value)
}).ToList();
}
else if(NroDias <= (365 * 2))
{
IngresosBrutos = (from orderList in
ListaResultadosVentas
group orderList by
orderList.Key.ToString("MMM yyyy")
into order
176

select new IngresosXFecha


{

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Fecha = order.Key,
Monto = order.Sum(amount=>
amount.Value)
}).ToList();
GastosXFecha = (from orderList in
ListaResultadosGastos
group orderList by
orderList.Key.ToString("MMM yyyy")
into order
select new IngresosXFecha
{
Fecha = order.Key,
Monto = order.Sum(amount =>
amount.Value)
}).ToList();
}
else
{
IngresosBrutos = (from orderList in
ListaResultadosVentas
group orderList by
orderList.Key.ToString("yyyy")
into order
select new IngresosXFecha
{
Fecha = order.Key,
Monto = order.Sum(amount =>
amount.Value)
}).ToList();
GastosXFecha = (from orderList in
ListaResultadosGastos
group orderList by
orderList.Key.ToString("yyyy")
into order
select new IngresosXFecha
{
Fecha = order.Key,
Monto = order.Sum(amount =>
amount.Value)
}).ToList();
}

}
}
}
private void GetAnalisisProductos()
177

{
ProductosMasVendidos = new List<KeyValuePair<string, float>>();

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ProductosBajoStock = new List<KeyValuePair<string, float>>();


GananciaXProducto = new List<KeyValuePair<string, float>>();
using (var conexion = GetMySqlConnection())
{
conexion.Open();
using (var cmd = new MySqlCommand())
{
MySqlDataReader reader;
cmd.Connection = conexion;

cmd.CommandText = @"select p.Descripcion, sum(dv.Cantidad)


Cantidad
from `detalleventa` dv
inner join `producto_venta` p on
p.`ID.Prod` = dv.`IdProd`
inner join `venta` v on v.`IdVenta` =
dv.`IdVenta`
where p.`IdUsuario` =
'"+Usuario.Id+@"' AND
v.Fecha between @fromDate and @toDate
group by p.Descripcion
order by 2 desc
LIMIT 5;";
cmd.Parameters.Add("@fromDate", MySqlDbType.Date).Value =
FechaInicio;
cmd.Parameters.Add("@toDate", MySqlDbType.Date).Value =
FechaFin;
reader = cmd.ExecuteReader();
while (reader.Read())
{
ProductosMasVendidos.Add(new KeyValuePair<string,
float>(reader[0].ToString(), float.Parse(reader[1].ToString())));
}
reader.Close();
reader.Dispose();

cmd.CommandText = "select Descripcion, Stock from


producto_venta where Stock <= 5 and `IdUsuario` = '" + Usuario.Id + "';";
reader = cmd.ExecuteReader();
while (reader.Read())
{
ProductosBajoStock.Add(new KeyValuePair<string,
float>(reader[0].ToString(), float.Parse(reader[1].ToString())));
}
reader.Close();
reader.Dispose();
178

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

cmd.CommandText = @"select p.Descripcion,


(sum(dv.Subtotal)-(p.CostoUnitario*sum(dv.Cantidad)))
from `detalleventa` dv
inner join `producto_venta` p on
p.`ID.Prod` = dv.`IdProd`
inner join `venta` v on v.`IdVenta` =
dv.`IdVenta`
where p.`IdUsuario` = '1' AND
v.Fecha between @fromDate and @toDate
group by p.Descripcion
order by 2 desc;";
reader = cmd.ExecuteReader();
while (reader.Read())
{
GananciaXProducto.Add(new KeyValuePair<string,
float>(reader[0].ToString(), float.Parse(reader[1].ToString())));
}
}
}
}

public bool LoadData(DateTime FechaInicio, DateTime FechaFin)


{
FechaFin = new DateTime(FechaFin.Year, FechaFin.Month,
FechaFin.Day, FechaFin.Hour, FechaFin.Minute, 59);
if(FechaInicio != this.FechaInicio || FechaFin != this.FechaFin)
{
this.FechaInicio = FechaInicio;
this.FechaFin = FechaFin;
this.NroDias = (FechaFin - FechaInicio).Days;

GetNroItems();
GetAnalisisVentas();
GetAnalisisProductos();
Console.WriteLine("Datos correctamente actualizados.");
return true;
}
else
{
Console.WriteLine("Datos no actualizados.");
return false;
}
}

public DataTable ToDataTable<T>(List<T> items)


{
179

DataTable dataTable = new DataTable(typeof(T).Name);


//Get all the properties

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public


| BindingFlags.Instance);
foreach (PropertyInfo prop in Props)
{
//Setting column names as Property names
dataTable.Columns.Add(prop.Name);
}
foreach (T item in items)
{
var values = new object[Props.Length];
for (int i = 0; i < Props.Length; i++)
{
//inserting property values to datatable rows
values[i] = Props[i].GetValue(item, null);
}
dataTable.Rows.Add(values);
}
//put a breakpoint here and check datatable
return dataTable;
}
}
}
180

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SECURITYCHECK.CS
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ingenieros_Commerce_Manager_v2._0.Entities;

namespace Ingenieros_Commerce_Manager_v2._0
{
public class SecurityCheck : conexionsql
{
public bool CheckPasswd(string passwd)
{
using(var conexion = GetMySqlConnection())
{
conexion.Open();
using(var cmd = new MySqlCommand())
{
cmd.Connection = conexion;
cmd.CommandText = "SELECT Contraseña from Usuario WHERE
AES_DECRYPT(Contraseña, @key) = @Passwd AND `ID.Usuario` = @UserID;";
cmd.Parameters.Add("@Passwd", MySqlDbType.VarChar).Value =
passwd;
cmd.Parameters.Add("@UserID", MySqlDbType.VarChar).Value =
Usuario.Id.ToString();
cmd.Parameters.AddWithValue("@key", Usuario.key);
var reader = cmd.ExecuteReader();
return reader.Read();
}
}
}

public bool LogWEncryptPasswd(string username, string passwd)


{
using(var conexion = GetMySqlConnection())
{
conexion.Open();
using (var cmd = new MySqlCommand())
{
cmd.Connection = conexion;
cmd.CommandText = "SELECT Username, Contraseña FROM
usuario WHERE BINARY Username = @Username AND AES_DECRYPT(Contraseña, @key) =
@Passwd ; ";
181

cmd.Parameters.AddWithValue("@Username", username);

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

cmd.Parameters.AddWithValue("@Passwd", passwd);
cmd.Parameters.AddWithValue("@key", Usuario.key);
var reader = cmd.ExecuteReader();
return reader.Read();
}
}

}
public int RegisterWEncrypt(string username, string passwd)
{
using (var conexion = GetMySqlConnection())
{
conexion.Open();
using (var cmd = new MySqlCommand())
{
cmd.Connection = conexion;
cmd.CommandText = "INSERT INTO usuario (Username,
Contraseña) VALUES (@Username, AES_ENCRYPT(@Passwd, @key));";
cmd.Parameters.AddWithValue("@Username", username);
cmd.Parameters.AddWithValue("@Passwd", passwd);
cmd.Parameters.AddWithValue("@key", Usuario.key);
return cmd.ExecuteNonQuery();
}
}
}
}
}
182

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CLIENTE.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ingenieros_Commerce_Manager_v2._0.Entities
{
public class Cliente
{
public static int IDCLI { get; set; }
public static string Nombre { get; set; }
public static string Direccion { get; set; }
public static string Telefono { get; set; }
public static float Saldo { get; set; }

public static void ClearClientData()


{
IDCLI = 0;
Nombre = null;
Direccion = null;
Telefono = null;
Saldo = 0;
}
}
}
183

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MATERIAPRIMA.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ingenieros_Commerce_Manager_v2._0.Entities
{
public class MateriaPrima
{
public static int Id { get; set; }
public static string Descripcion { get; set; }
public static float Stock { get; set; }
public static float Costo { get; set; }

public static void ClearMatData()


{
Id = 0;
Descripcion = null;
Stock = 0;
Costo = 0;
}

}
}
184

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PRODUCTO.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ingenieros_Commerce_Manager_v2._0.Entities
{
public class Producto
{
public static int IDPROD { get; set; }
public static string Descripcion { get; set; }
public static float Stock { get; set; }
public static float PrecioUnitario { get; set; }
public static float CostoUnitario { get; set; }

public static void ClearProductData()


{
IDPROD = 0;
Descripcion = null;
Stock = -1;
PrecioUnitario = -1;
CostoUnitario = 0;
}

}
}
185

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

USUARIO.CS
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing.Imaging;

namespace Ingenieros_Commerce_Manager_v2._0.Entities
{
public class Usuario
{
public static int Id { get; set; }
public static string Username { get; set; }
public static string Password { get; set; }
public static string Denominacion { get; set; }
public static string Direccion { get; set; }
public static string Telefono { get; set; }
public static string RUT { get; set; }
public static byte[] Foto { get; set; }

public static string key { get; private set; } = "Ingenieros";

public static MemoryStream ByteToImage(byte[] img)


{
MemoryStream ms = new MemoryStream();
if (img != null)
{
ms = new MemoryStream(img);
}
return ms;
}
public static byte[] ImageToByte(Image img)
{
MemoryStream ms = new MemoryStream();
if (img.RawFormat == ImageFormat.Jpeg)
{
img.Save(ms, ImageFormat.Jpeg);
}
else if (img.RawFormat == ImageFormat.Png)
{
img.Save(ms, ImageFormat.Png);
186

}
else if (img.RawFormat == ImageFormat.Bmp)

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

{
img.Save(ms, ImageFormat.Bmp);
}
return ms.ToArray();
}
public static void ClearData()
{
Id = 0;
Username = null;
Password = null;
Direccion = null;
Denominacion = null;
Telefono = null;
RUT = null;
Foto = null;
}

}
}
187

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

MANUAL DE
USUARIO
188

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

OBJETIVO
La implementación del manual de usuario presenta como objetivo el aprendizaje
y facilitación del uso del programa que se está pretende presentar, en este caso
“Ingenieros Commerce Manager” es un programa sencillo en cuanto a manejo,
pero, de todas maneras, aquí presentamos el manual para que el propietario
tenga una interacción más amena con el desarrollo del programa y con las
complicaciones que se vayan presentando.
Al momento de compilar los datos y manejar los detalles dentro del programa, se
le presenta una guía para la facilitación de la búsqueda de dichas herramientas,
también cabe mencionar que dentro del manual se presentan explicaciones de
los elementos que se podrán visualizar dentro del software.
189

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE SESIONES:

1. Ingresando al programa, se le mostrara lo siguiente, ingresar los


datos correspondientes.

En la pantalla de inicio se le presenta la opción de “registrarse” en


caso no presentar una cuenta y de guardar los datos ingresados.

2. Siguiendo en caso de no presentar una cuenta, aparecerá esta


pantalla de creación de usuario, ingrese sus datos y continue.
190

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Después de ingresar los datos, se guardará automáticamente en la


base de datos, solo debe volver a la pantalla de inicio e ingresar sus
datos y listo. Podrá ingresar al programa.
1. Dentro del Programa la primera pantalla que nos aparecerá será la
siguiente:

La siguiente pantalla muestra el menú donde se desglosará todo el


funcionamiento del programa y las diferentes pantallas con las que
se puede interactuar
3.1) Después de desplegar el menú se mostrará lo siguiente:
191

Se puede observar los distintos apartados que presenta el programa.

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE VENTAS:

3. Dentro del programa, ya se podrán ver las opciones que presenta.


Como primera opción tenemos a “Ventas”.

Dentro de la pantalla “ventas” se desplegarán dos agregados, que


serán “registrar” y “historial”, registrar se abre automáticamente, es el
que registra la venta y en historial es donde se pueden chequear las
ventas que se hayan hecho. A su vez se puede gestionar las ventas,
ingresar el producto o buscar un producto deseado, también a su
vez se puede buscar a un cliente en específico si así es necesario, y
en caso de ser un envío o venta en el local, también se puede
configurar, a su vez también se manejan las cantidades y presenta
una calculadora de pago. Luego para finalizar la venta, se da en el
botón de “Crear Venta”.

4.1) En caso de desear buscar un cliente, la pantalla que se


desplegará será la siguiente:
192

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

En esta pantalla se puede buscar al cliente que desee, y el cliente


buscado aparecerá debajo con su descripción especifica, solo
debe ingresar los datos necesario y buscar.
4.2) En caso de desear buscar un producto, la pantalla que se
desplegará será la siguiente:

En esta interfaz se puede buscar un producto desee, el producto


buscado aparecerá debajo con su descripción especifica, solo es
necesario ingresar los datos necesarios y buscar.
193

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

4.3) En caso de desear buscar una venta realizada, la pantalla que se


desplegará será la siguiente:

En la pantalla de historial lo que se puede ver son las ventas realizadas con
su respectiva descripción y el cliente a quien se le realizo, así como su
fecha. También presenta la opción de buscar las ventas realizadas con un
atributo que las defina.
194

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE GASTOS

4. Dentro del programa, ya se podrán ver las opciones que presenta.


Como segunda opción tenemos a “Gastos”.

Dentro de la pantalla “Gastos” se puede gestionar el ingreso o la


eliminación de todo tipo de gastos que se generen o ya este
generado, así como ingresar el valor, un concepto, el tipo y la fecha
del mismo, también se puede buscar un gasto especifico en caso de
que sea necesario. También se encuentra la opción de editar algún
gasto realizado o en caso de que se requiera también se presenta la
opción de “deseleccionar” y a su vez tenemos la opción de “refrescar”
que nos permite recargar la pantalla para que se actualicen los
datos que se muestran.
195

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE INVENTARIO

5. Dentro de la pantalla de “Inventario” para poder ingresar va a pedir


una verificación como la siguiente.

Lo que es necesario para la verificación es ingresar la contraseña


con la que se inició la sesión de ese momento.
6.1) Luego de la verificación podrá ingresar libremente a la pantalla de
“Inventario”:

Dentro de la pantalla “Inventario” se pueden gestionar los productos en venta y la


materia prima que sea hayan ingresado o que ya este dentro de la base de
datos, también se presenta la opción de eliminar algún producto o también se
puede editar algún dato que sea necesario. En caso de añadir un producto nuevo
196

se deberá ingresar el precio, stock, descripción y el tipo que sea, ya sea materia

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

prima o producto en venta, también se puede buscar un producto especifico de


los que ya existan en caso que se requiera. También se encuentra la opción de
También refrescar la pantalla y que muestre algún dato nuevo que se haya
ingresado o en caso de que se requiera también se presenta la opción de
“deseleccionar”.
6.2) El inventario también presenta otra opción para registrar producción:

Lo que realiza el botón “Registrar Producción”, es registrar el precio de producción


y la cantidad de kilos producidos, esto devuelve como valor un precio por kilo
producido.

6.3) Al seleccionar un producto de venta y presionar el botón “Registrar


Producción” saldrá la siguiente pantalla:
197

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

En esta pantalla se puede observar una descripción del producto, el precio, el


stock y el costo unitario actual del mismo, a su vez se puede manejar la cantidad,
el costo de producción y si presenta algún costo adicional.

6.4) En caso de seleccionar la materia prima se mostrará un nuevo botón como el


siguiente:

Al estar seleccionando una materia prima en específico se desplegará el botón


“utilizar”, este nos permite ver los datos de la materia seleccionada mostrando
una pantalla como la siguiente:
198

En

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

esta pantalla se puede detallar la cantidad de materia prima que se desea


utilizar, poner la fecha, además se puede ver su stock y su costo, así como una
descripción de la misma.
199

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

FORMULARIO DE RESUMEN

6. Dentro de la pantalla de “Resumen” para poder ingresar va a pedir


una verificación como la siguiente.

Lo que es necesario para la verificación es ingresar la contraseña


con la que se inició la sesión de ese momento.
7.1) Luego de la verificación podrá ingresar libremente a la pantalla
de “Resumen”:

Dentro de la pantalla “Resumen” se pueden gestionar el resumen de las


actividades realizadas durante, el propio día, los últimos 7 días, los últimos
30 o dentro de este mes o se puede ingresar una fecha y buscar un día
determinado. También presenta un apartado mostrando los números de
200

ventas, el total de ingresos, el total de gastos y el total de ganancias. A su

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

vez presenta graficas que presentan los ingresos brutos, los costos y los
productos que son más vendidos, a su vez presenta un apartado que
muestra los productos que se están agotando y su respectiva información.
201

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE CLIENTES

7. Dentro del programa, ya se podrán ver las opciones que presenta.


Como quinta opción tenemos al “Clientes”.

Dentro de la pantalla “Clientes” se pueden gestionar los clientes ingresados o


eliminar un cliente que ya exista, en caso de añadir un cliente debe de ingresarle
el nombre, dirección, teléfono y saldo, también se puede buscar un cliente
especifico de los que ya existan en caso que se requiera. También se encuentra la
opción de editar algún dato de los clientes o en caso de que se requiera también
se presenta la opción de “deseleccionar”, en caso de ser necesario se presenta
las opciones “refrescar” para recargar la pantalla y así se carguen todos los datos
que hayan sido ingresados.
202

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

REGISTRO DE USUARIO

8. Dentro del programa, ya se podrán ver las opciones que presenta.


Como sexta opción tenemos a “Usuario”.

Dentro de la pantalla “Usuario” se pueden control de los usuarios y


gestionar los datos de los usuarios que pueden manipular el
programa, solo se necesita la “ID”, una de las opciones que contiene
es cambiar la contraseña en caso de que sea necesario, también se
le puede agregar una denominación, Rut, dirección y un teléfono. A
su vez, presenta la opción para modificar el logo de la empresa. En
caso de ser necesario presenta la opción de “soporte”, que contiene
nuestros contactos.
203

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

9.1) Cuando ingrese al botón “soporte” se desplegará la siguiente pantalla:

Esto presenta el número de los integrantes de “Ingenieros Software “, en caso de


ser necesario comunicarse con alguno de ellos o envíenos un correo.

9.2) En caso de desear cambiar la contraseña se desplegará


un nuevo campo de texto, como lo siguiente:
204

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Después de establecer la contraseña se guardará la nueva contraseña


automáticamente en la base de datos y quedará guardada,

9.3) En caso de desear buscar un nuevo logo para la empresa


se le desplegara una pantalla como la siguiente:

En caso de querer ingresar un nuevo logo o imagen que identifique a


su empresa, deberá buscarla dentro de su dispositivo, seleccionarla y
luego abrirla. Después de eso aparecerá como nuevo logo dentro del
programa.
205

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

RED DE LA
EMPRESA
206

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


207 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


208 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


209 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


210 Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

CONCLUSIÓN
211

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Cuando se trata de pensar cómo desarrollar y enfrentar este proyecto,


nuestro enfoque siempre fue el mismo, eficiencia y simpleza.

Cumplir con lo que necesita el cliente para afrontar las dificultades de su


negocio y que se complemente con su entorno de trabajo.

Las dificultades que se vieron en el proceso fueron cuando se quiso idear el


programa ya que se buscó siempre realizar un software lo más completo
posible, con una gran cantidad de funciones y herramientas las cuales
sean complementarias y puedan cumplir los estándares de varios tipos de
negocios.

Creemos que brindamos una muy buena herramienta, capaz de cumplir


con las necesidades del negocio y que tiene potencial para seguir
mejorando, tanto en utilidades a la hora de administrar una empresa y
expandir las funciones que ofrece, también incrementar nuestros
conocimientos.

Reconocemos que podríamos haber tomado otros enfoques, pero


creemos firmemente en nuestras habilidades y en nuestro producto, pero
no por ello nos vamos a conformar ya que sostenemos que nuestra idea
es seguir mejorando y siempre tratar de ser mejor que ayer.
212

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

BIBLIOGRAFÍA
213

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

• http://www.conabip.gob.ar/sites/default/files/comu
nicaciones/SAT/Guia_para_la_formulacion_y_pres
entacion_de_proyectos.pdf
• https://concepto.de/conclusion-de-un-proyecto
• https://es.scribd.com/document/316166475/Como-
Redactar-El-Titulo-de-Un-Proyecto
• www.academia.edu/8887467/Fundamentaci%C3%B
3n_y_Objetivos_de_un_Proyecto
• https://www.udemy.com/course/sql-curso-
completo-de-sql-aprende-desde-cero/
• www.academia.edu/8887467/Fundamentaci%C3%B
3n_y_Objetivos_de_un_Proyecto
• https://www.udemy.com/course/csharp_cursototal
_programador/?gclid=CjwKCA

Distintos documentos y videos de:


https://youtube.com
https://edusalto.uy
214

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO
215

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO A: AFICHE PUBLICITARIO


216

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO B: CONTRATO S.R.L.

CONTRATO DE SOCIEDAD DE RESPONSABILIDAD LIMITADA


En la ciudad de Salto, el día 27 de abril de 2022, comparecen: I) Luciano Beraza, uruguayo,
18 años, soltero, 5.475.653-0, Julio Herrera y Obes 875; II) Santiago Esquerré, uruguayo,
17 años, soltero, 5.528.729-9, Brasil 1259; III) Bruno Guglielmone, uruguayo, 19 años,
soltero, 5.317.359.7, Julio Delgado 1909; IV) Facundo Manitto, uruguayo, 17 años, soltero,
5.486.175-1, Barrio Autódromo: calle 4 1816, V) Gerónimo Ramos, uruguayo, 17 años,
soltero, 5.540.079-6, 6 de Abril 562 y convienen en celebrar el siguiente contrato:

PRIMERO (Denominación). -Los comparecientes convienen en constituir una SOCIEDAD


DE RESPONSABILIDAD LIMITADA que se regirá por la Ley 16.060, el decreto 155/010 de
24 de mayo de 2010, y demás normas concordantes y complementarias, para la que
adoptan la denominación de Ingenieros Software S.R.L.

SEGUNDO (Domicilio) – La sociedad tendrá su domicilio en el departamento de Salto,


pudiendo instalar sucursales dentro y fuera del país.

TERCERO (Objeto) – El objeto de la sociedad que se constituye será el de: Desarrollo y


distribución de productos informáticos. En cumplimiento de dicho objeto la sociedad podrá
realizar todo tipo de actos.
CUARTO (Capital y cuotas) – El capital social asciende a la suma de $U 400.000
(cuatrocientos mil pesos uruguayos), dividido en 20 cuotas de $U 20.000 (cien mil pesos
uruguayos) cada una.
QUINTO (Aportes) – Los socios, a efectos de la conformación del capital social, aportan en
este acto, las siguientes sumas: I) Bruno Guglielmone la suma de $U 80.000 (ochenta mil
pesos uruguayos), correspondiéndole 4 (cuatro) cuotas; II) Santiago Esquerré la suma de
$U 80.000 (ochenta mil pesos uruguayos), correspondiéndole 4 (cuatro) cuotas; III) Facundo
Manitto la suma de $U 80.000 (ochenta mil pesos uruguayos), correspondiéndole 4 (cuatro)
cuotas; IV) Luciano Beraza la suma de $U 80.000 (ochenta mil pesos uruguayos),
correspondiéndole 4 (cuatro) cuotas; V) Gerónimo Ramos la suma de $U 80.000 (ochenta
mil pesos uruguayos), correspondiéndole 4 (cuatro) cuotas; Forma de aporte de los socios:
Los socios de Ingenieros Software S.R.L. se comprometen a conformar las entregas de
capital anteriormente estipuladas para cada uno de ellos, dentro del marco de la Ley N°
19210.
SEXTO (Distribución de ganancias y pérdidas) –Las ganancias se distribuirán y las pérdidas
se soportarán en proporción a lo aportado.
SÉPTIMO (Administración) –La administración y representación de la sociedad
corresponderá a cualquiera de los socios en forma indistinta. El representante tendrá las
más amplias facultades para el gobierno, administración, gravamen y disposición de los
bienes sociales. Podrá otorgar poderes generales y especiales.
OCTAVO (Plazo) – El plazo de la sociedad que se constituye es de 20 (veinte) años a partir
de hoy. Dicho plazo se prorrogará automáticamente por períodos de 10 (diez) años cada
diez, a contar del vencimiento del plazo original. Los socios podrán ejercer el derecho de
217

receso cada 10 (diez) años a contar del presente retirándose de la sociedad y continuando
ésta con los restantes, debiendo comunicar su decisión mediante telegrama dirigido a la
SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE
Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

Sede social y a la sociedad con una antelación no menor a sesenta días a contar del
respectivo vencimiento.
NOVENO (Cesión de cuotas) – La cesión de cuotas se regirá por el régimen legal.
DÉCIMO (Toma de decisiones) – Las decisiones sociales se adoptarán conforme a lo
dispuesto por la normativa vigente.
DÉCIMO PRIMERO (Pacto de continuación) –En caso de fallecimiento o incapacidad de
cualquiera de los socios la sociedad se disolverá.

DÉCIMO SEGUNDO (Telegrama colacionado y domicilios especiales) – Las partes pactan


la validez del telegrama colacionado para toda comunicación, notificación e intimación entre
ellas y como domicilios especiales los denunciados como suyos en la comparecencia.

DÉCIMO TERCERO (Solicitud de certificación de firmas) – Las partes solicitan al Escribano


Matías Malvasio la certificación notarial de sus firmas.

CERTIFICO QUE: I) Las firmas que anteceden en el contrato de Sociedad de


Responsabilidad Limitada que antecede, son auténticas y fueron puestas en mi presencia
por las personas hábiles Luciano Beraza, Santiago Esquerré, Bruno Guglielmone, Facundo
Manitto, Gerónimo Ramos, acreditándome su identidad con los correspondientes
documentos de identidad que me exhiben, y cuyos demás datos individualizantes surgen
del referido documento, que previa lectura que del mismo les hice lo otorgaron y firmaron. II)
El contrato que antecede fue otorgado conforme lo dispuesto en la Ley 16.060 y el decreto
155/010 de 24 de mayo de 2010. III) El domicilio fiscal de Ingenieros Software S.R.L. es en
la calle Brasil número 1259, entre las calles Invernizi y Feliciano viera de la ciudad de Salto
del departamento de Salto, y su domicilio constituido en la calle Brasil número 1259, entre
las calles Invernizi y Feliciano viera, de la ciudad de Salto del departamento de Salto. EN FE
DE ELLO, a solicitud de Ingenieros Software S.R.L., y para su presentación ante Registro
Nacional de Comercio, Dirección General Impositiva y Banco de Previsión Social, expido el
presente que sello, signo y firmo en Salto, departamento de Salto el veintisiete de abril de
dos mil veintidós.
218

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO C: ENTREVISTA AL CLIENTE

ENTREVISTA REALIZADA EL DÍA 8 DE ABRIL DE 2022

Se realizó una entrevista planteándole al cliente Andrés Argain las siguientes


consultas para recaudar la información necesaria con el fin de desarrollar un
software para optimizar y mejorar el rendimiento de la gestión de datos,
inventario, así como todo lo necesario para su empresa “La Milagrosa”. De las
siguientes 8 preguntas sacamos las siguientes conclusiones:

¿Actualmente utilizan alguna aplicación para facilitar la gestión de biblioteca?

Si, la aplicación Treinta.

¿Qué funciones debe cumplir la aplicación? ¿Qué información necesita ser


procesada?

Gestión de inventario según secciones (materia prima, producidos, condimentos,


etc.), envío, números de teléfono de clientes, escaneo de código QR, pago con pos,
gastos por día, estadística con gráfica de ventas.

¿Cuántas personas administran la biblioteca?

2 personas administran la biblioteca.

¿Le es necesario registrar información de sus egresos e ingresos?

Si, es necesario.

¿Le es necesario registrar información de sus clientes?

Si, se registra información de clientes.

¿De qué hardware se dispone para implementar la aplicación?

Celular y computadora vinculados.

Extra: Se desea poder convertir planillas de datos en otro formato y mantener un


registro de que clientes pagaron y cuales todavía no pagaron; un historial de
pagos del mes que se guarde.

Poder obtener un comprobante del contacto, fecha de transacción, vendedor,


método de pago, estado (pago o debiendo), número de transacción, detalles de
compra (producto, cantidad, precio unitario y valor, total a pagar).
219

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO D: SCRIPT ZENITY

#!/bin/bash

variable=$(zenity --list --title="Que es lo que quiere hacer" --width="340" --


height="200" --radiolist \
--column=" " --column="Opción a elegir" \
FALSE "Buscar Producto" \
FALSE "Buscar Cliente" \
FALSE "Salir"
)

case $variable in
"Buscar Producto")
nombreproducto=$(zenity --entry --title="Ingrese ID del Producto" --
width=250 --height=160 --ok-label="Aceptar" --cancel-label="Cancelar" --
text="¿Cuál es el nombre del producto?")
read=$nombreproducto
echo "SELECT 'ID.Prod', Stock, Descripción, PrecioUnitario FROM
producto_venta where Descripcion='$nombreproducto'" | sudo mysql proyecto -N |
tr '\t' '\n' | zenity --list --title="Producto en venta" --text=" " --
column="ID.PROD" --column="Stock" --column="Descripcion" --column="Precio
Unitario" --height=180 --width=450;
;;
"Buscar Cliente")
nomcliente=$(zenity --entry \
--title="Ingrese ID" \
--width=250 \
--height=160 \
--ok-label="Aceptar" \
--cancel-label="Cancelar" \
--text="¿Cual es el nombre del cliente?")
read=$nomcliente

echo "SELECT 'ID.CLI', Nombre, Direccion, Telefono, Saldo FROM cliente where
Nombre='$nomcliente'" | sudo mysql proyecto -N | tr '\t' '\n' | zenity --list
--title="Cliente" --text=" " --column="ID Cliente" --column="Nombre" --
column="Direccion" --column="Telefono" --column="Saldo" --height=180 --
width=450;

;;
"Salir")
zenity --info --title="Saliendo..." --text="Adios"
;;
220

esac

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO E: CARTA DE NOTIFICACIÓN DE INTEGRANTES DEL EQUIPO

Salto, 18 de marzo de 2022.

Por la presente se notifica a la Coordinación de Informática de la Escuela


Superior Catalina Harriague de Castaños que el equipo de desarrollo de
software denominado “Ingenieros Software™”, se encuentra conformado
por los siguientes estudiantes de 3° BE de Educación Media Tecnológica,
Bachillerato de Informática:

Santiago Esquerré 5.528.729-9 Firma: ______________

Facundo Manitto 5.486.175-9 Firma: ______________

Luciano Beraza 5.475.653-0 Firma: ______________

Bruno Guglielmone 5.317.359-7 Firma: ______________

Gerónimo Ramos 5.540.079-6 Firma: ______________

Siendo el estudiante Luciano Beraza el coordinador del equipo.

Saluda atentamente,

El equipo de trabajo de “Ingenieros Software™”.


221

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

ANEXO F: LINKS EXTERNOS

REPOSITORIO GITHUB DEL PROGRAMA

https://github.com/luchoberaza/ingenierossoftware

SCRIPT ZENITY

https://github.com/luchoberaza/ingenierossoftware/blob/c73ce3b1efe60bc0b455
e0438b818a1407f13880/zenityproyecto.sh
222

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE


Escuela Superior Catalina Harriague de Castaños | 3ro EMT Informática

PROYECTO DE CISCO PACKET TRACER

https://drive.google.com/file/d/1S6PkqacXECrJ_1ZG2hbQvtTiqGCPbPU0/view?usp=s
hare_link

PÁGINA WEB WIX

https://brunoguglielmone.wixsite.com/ingenieronsoftware
223

SOFTWARE DE ADMNISTRACIÓN PARA “LA MILAGROSA” MILANESERÍA | INGENIEROS SOFTWARE

También podría gustarte