monografía sistema de ventas básico en vb .net
Post on 18-Dec-2014
4.392 Views
Preview:
DESCRIPTION
TRANSCRIPT
MONOGRAFÍA SOBRE EL DESARROLLO DE SISTEMA
INFORMÁTICO PARA VENTA DE PRODUCTOS DE CÓMPUTO
ASESOR
Ing. Hobby Saavedra Rosas
DICIEMBRE 2012
TRUJILLO - PERÚ
ii
AGRADECIMIENTOS:
En primer lugar a Dios todo poderoso que me ha permitido llegar hasta aquí,
que me dio la bendición de culminar mis estudios superiores.
A mis padres, a quienes le debo este logro, quien siempre me apoyo desde el
inicio de mi carrera, tanto en lo económico, como en lo moral.
A mis compañeros de estudios y a mis compañeros de trabajo, asesor, amigos
y todas las personas que han creído en mí, y que de una u otra forma han
ayudado a la finalización de este trabajo
A todas las demás personas que no fueron citadas, pero que de alguna
manera directa o indirecta contribuyeron a la realización de este trabajo.
iii
RESUMEN
El desarrollo de un programa computarizado optimiza el tiempo, sistematizar la labor
del usuario, especialmente desarrollado para un análisis rápido y eficaz.
Pretende primordialmente esta monografía diseñar e implementar un sistema
informático de Escritorio, destinado a la venta de Productos de cómputo, con la
finalidad de mantener la información centralizada y almacenada en una base de datos
y a partir de ellos poder realizar consultas y reportes, para brindar información a los
clientes sobre los precios y productos que cuenta una empresa que se dedica a la
venta de productos de cómputo.
Para el desarrollo del sistema informático se ha empleado como soporte de base de
datos a Microsoft Access 2010 y lenguaje de programación Visual Basic. Net. Como
fuentes de datos se han consultado tanto fuentes de internet como bibliografía de las
universidades locales.
Finalmente se diseñó e implemento satisfactoriamente dicho sistema, que permite el
mantenimiento de clientes, productos, proveedores; así como también permite
generar el pedido y realizar la respectiva venta. Además dicho sistema genera los
reportes, los cuales pueden ser exportados en formato pdf, xls o Word, para su
posterior uso. En este trabajo se muestra paso a paso el diseño e implementación,
tanto de la base de datos como el código fuente de dicho sistema.
Se concluye que el sistema informático es un instrumento útil puesto que permite
automatizar las búsquedas, por determinado campos, de cada entidad que conforman
el sistema.
Palabras claves: Sistema informático, Base de Datos, Lenguaje de Programación,
Generación de Reportes.
iv
INTRODUCCIÓN
El presenta trabajo pretende mostrar, la integración de la tecnológica .NET, en el
desarrollo de un Sistema Informático para la Venta de Productos de Cómputo, los
cuales actualmente están logrando un auge importante, debido a que hoy en día se
maneja mayor cantidad de información y se requiere obtenerlo en el menor tiempo y
generar a partir de ello ventajas competitivas, en las empresas dedicadas a este
rubro.
Para la elaboración de este sistema informático, se hizo uso del lenguaje de
programación Visual Basic. Net, el cual nos va a permitir el diseño e implementación
de dicho software, en el aspecto sobre el almacenamiento de los datos, se hizo uso
de Microsoft Access 2010, el cual permitirá almacenar toda la información, y para los
reportes se hizo uso de Cristal Reports, el cual permitirá generar los informes.
La estructura de está monografía está conformada por tres capítulos; Capítulo I Marco
Referencial, Capítulo II Metodología y Capitulo III Conclusiones, Recomendaciones y
Trabajos futuros.
La parte medular de la monografía se ubica en el Capítulo II, debido a que en ellos se
presenta el diseño e implementación tanto de la base de datos como de la aplicación.
v
INDICE DE IMÁGENES
Ilustración 1: Funcionamiento Sistema Gestor de Base de Datos ........................................................... 9
Ilustración 2: Niveles de Abstracción de una Base de Datos ............................................................................ 11
Ilustración 3: Estructura multicapa de las facilidades de usuario ........................................................... 13
Ilustración 4: Entidad y Conjunto de Entidades ........................................................................................ 15
Ilustración 5: Representación de la Entidad Persona .............................................................................. 16
Ilustración 6: Entidad Débil ........................................................................................................................... 16
Ilustración 7: Ejemplo de Relación .............................................................................................................. 17
Ilustración 8: Representación Gráfica de Relación .................................................................................. 17
Ilustración 9: Atributos de Entidad y Relación ........................................................................................... 17
Ilustración 10: Transformación de Entidad a esquema Relacional ........................................................ 20
Ilustración 11: Grafo Relacional .................................................................................................................. 20
Ilustración 12: Esquema Relacional de Ms Access .................................................................................. 21
Ilustración 13: .Net Framework .................................................................................................................... 26
Ilustración 14: Modelo Lógico de Sistema Informático ............................................................................ 28
Ilustración 15: Modelo Entidad Relación .................................................................................................... 30
Ilustración 16: Entidades o Tablas .............................................................................................................. 31
Ilustración 17: Modelo Relacional en Access ............................................................................................ 34
Ilustración 18: Tabla Producto ..................................................................................................................... 34
Ilustración 19: Tabla Cliente ......................................................................................................................... 35
Ilustración 20: Tabla Venta ........................................................................................................................... 35
Ilustración 21: Tabla DetalleVenta .............................................................................................................. 36
Ilustración 22: Tabla Proveedor ................................................................................................................... 36
Ilustración 23: Tabla Usuario ....................................................................................................................... 36
Ilustración 24: Formulario de Acceso al Sistema ...................................................................................... 37
Ilustración 25: Código Fuente Conexión Base Datos .............................................................................. 37
Ilustración 26: Código Fuente Formulario de Acesso .............................................................................. 38
Ilustración 27: Formulario Principal del Sistema ....................................................................................... 38
Ilustración 28: Código Fuente Formulario Principal.................................................................................. 39
Ilustración 29: Formulario Mantenimiento de Clientes ............................................................................. 40
Ilustración 30: Elementos Formulario Mantenimiento Clientes ............................................................... 40
Ilustración 31: Código Fuente Formulario Mantenimiento de Clientes .................................................. 44
Ilustración 32: Formulario Mantenimiento Productos ............................................................................... 44
Ilustración 33: Código Fuente Formulario Mantenimiento de Productos .............................................. 49
Ilustración 34: Formulario Mantenimiento de Proveedor ......................................................................... 50
Ilustración 35: Componentes de Formulario Mantenimiento de Proveedores ..................................... 50
Ilustración 36: Código Fuente Mantenimiento Proveedor ....................................................................... 53
Ilustración 37: Componentes Formulario Mantenimiento de Usuarios .................................................. 54
Ilustración 38: Código Fuente Formulario Mantenimiento de Usuarios ................................................ 59
Ilustración 39: Formulario de Búsqueda de Clientes................................................................................ 59
Ilustración 40: Componentes Formulario Búsqueda de Clientes ........................................................... 59
Ilustración 41: Código Fuente Formulario Consulta de Clientes ............................................................ 61
Ilustración 42: Formulario Búsqueda de Productos.................................................................................. 61
Ilustración 43: Código Fuente Formulario Consulta de Clientes ............................................................ 63
Ilustración 44: Formulario Búsqueda de Proveedores ............................................................................. 64
vi
Ilustración 45: Código Fuente Formulario Consulta de Proveedores .................................................... 65
Ilustración 46: Formulario Consulta de Ventas ......................................................................................... 66
Ilustración 47: Código Fuente Formulario Consulta de Ventas .............................................................. 67
Ilustración 48: Formulario Búsqueda de Cliente para Ventas................................................................. 68
Ilustración 49: Código de Fuente en el formulario Búsqueda de Cliente Ventas ................................. 69
Ilustración 50: Formulario Búsqueda de Ventas ....................................................................................... 69
Ilustración 51: Código Fuente Formulario Búsqueda de Ventas ............................................................ 70
Ilustración 52: Código Fuente Formulario de Venta ................................................................................. 76
Ilustración 53: Formulario de Reporte de Ventas ..................................................................................... 77
Ilustración 54: Diseño de Reporte de Ventas ............................................................................................ 77
Ilustración 55: Código Fuente Formulario Reporte de Ventas ................................................................ 77
Ilustración 56: Formulario Reporte de Clientes ......................................................................................... 78
Ilustración 57: Diseño de Reporte de Clientes .......................................................................................... 78
Ilustración 58: Código Fuente Formulario Reporte de Clientes .............................................................. 78
Ilustración 59: Formulario Reporte de Productos ..................................................................................... 79
Ilustración 60: Diseño de Reporte de Productos ...................................................................................... 79
Ilustración 61: Código Fuente Formulario Reporte de Productos .......................................................... 79
Ilustración 62: Formulario de Reporte de Proveedores ........................................................................... 80
Ilustración 63: Diseño de Reporte de Proveedores .................................................................................. 80
Ilustración 64: Código Fuente en el Formulario Reporte de Proveedores ............................................ 80
Ilustración 65: Manejo Formulario Acceso al Sistema ..................................................................................... 83
Ilustración 66: Manejo Formulario Principal ............................................................................................... 83
Ilustración 67: Manejo de Formulario Mantenimiento de Clientes ......................................................... 84
Ilustración 68: Manejo de Formulario de Mantenimiento de Productos ................................................ 84
Ilustración 69: Manejo de Formulario Mantenimiento de Proveedor ..................................................... 85
Ilustración 70: Manejo Formulario Mantenimiento de Usuarios ............................................................. 85
Ilustración 71: Manejo de Consulta de Clientes ........................................................................................ 86
Ilustración 72: Manejo de Consulta de Proveedores................................................................................ 86
Ilustración 73: Manejo de Consulta de Productos .................................................................................... 86
Ilustración 74: Manejo de Consulta de Ventas por Cliente ..................................................................... 87
Ilustración 75: Manejo de Pedido por Cliente ............................................................................................ 87
Ilustración 76: Manejo de Gestión Pedido (Venta) ................................................................................... 88
Ilustración 77: Manejo de Cliente que realiza Pedido .............................................................................. 88
Ilustración 78: Manejo de Selección de Productos ................................................................................... 89
Ilustración 79: Gestión del Pedido por Cliente .......................................................................................... 89
Ilustración 80: Reporte de Clientes ............................................................................................................. 90
Ilustración 81: Reporte de Productos ......................................................................................................... 90
Ilustración 82: Reporte de Proveedores ..................................................................................................... 91
Ilustración 83: Reporte de Ventas ............................................................................................................... 91
Ilustración 84: Reporte de Facturas ............................................................................................................ 92
vii
INDICE DE TABLAS
Tabla 1: Tabla de una Base Datos .............................................................................................. 19
Tabla 2: Tabla Clientes de una Base de Datos ......................................................................... 19
Tabla 3: Características del Software ......................................................................................... 30
Tabla 4: Descripción Tabla Clientes ............................................................................................ 31
Tabla 5: Descripción Tabla Producto .......................................................................................... 32
Tabla 6: Descripción Tabla Usuario ............................................................................................ 32
Tabla 7: Descripción Tabla Proveedor ........................................................................................ 33
Tabla 8: Descripción Tabla Venta ................................................................................................ 33
Tabla 9: Descripción Tabla DetalleVenta ................................................................................... 33
Tabla 10: Elementos del Formulario de Acceso ........................................................................ 37
Tabla 11: Elementos Formulario Principal .................................................................................. 39
Tabla 12: Componentes Formulario Mantenimiento de Productos ........................................ 45
Tabla 13: Componentes del Formulario Búsqueda de Productos .......................................... 62
Tabla 14: Componentes Formulario Búsqueda de Proveedores ............................................ 64
Tabla 15: Componentes Formulario Búsqueda de Ventas ...................................................... 66
Tabla 16: Componentes del Formulario Consulta de Clientes para Ventas ...................................... 68
Tabla 17: Componentes Formulario Búsqueda de Ventas ...................................................... 69
Tabla 18: Componentes Formulario Gestión de Pedido .......................................................... 71
INDICE GENERAL
AGRADECIMIENTOS ......................................................................................................................... ii
RESUMEN .......................................................................................................................................... iii
INTRODUCCIÓN................................................................................................................................iv
INDICE DE IMÁGENES ...................................................................................................................... v
INDICE DE TABLAS .........................................................................................................................vii
CAPITULO I ........................................................................................................................... 9
1. MARCO REFERENCIAL ................................................................................................ 9
1.1. SISTEMAS GESTORES DE BASES DE DATOS (SGBD) .................................... 9
1.1.1. Definición de SGBD........................................................................................ 9
1.1.2. Niveles de abstracción de una base de datos .......................................... 10
1.1.3. Estructura Multicapa .................................................................................... 13
1.1.4. Modelos Conceptuales ................................................................................ 14
1.1.5. Modelos Lógicos .......................................................................................... 17
1.1.6. Principales Sistemas Gestores de Bases de Datos ................................. 21
1.2. TECNOLOGÍA .NET .............................................................................................. 24
1.2.1. Visual Studio .Net 2010 ............................................................................... 24
1.2.2. .NET FRAMEWORK .................................................................................. 25
CAPITULO II ........................................................................................................................ 27
2. METODOLOGÍA ........................................................................................................... 27
2.1. Visión .................................................................................................................... 27
2.2. Oportunidad de Negocio ..................................................................................... 27
2.3. Análisis de beneficios ......................................................................................... 27
2.4. Modelo lógico de integración de tecnologías en el Sistema informático ..... 28
2.5. Descripción de componentes ............................................................................ 28
2.6. Especificaciones Técnicas ................................................................................. 29
2.7. Diseño e Implementación de la Base de Datos del Sistema Informático ..... 30
2.8. Diseño e implementación del Sistema Informático ......................................... 37
CAPITULO III ....................................................................................................................... 81
3. CONCLUSIONES Y RECOMENDACIONES ............................................................... 81
REFERENCIAS BIBLIOGRÁFICAS ................................................................................... 82
ANEXOS ............................................................................................................................... 83
9
CAPITULO I 1. MARCO REFERENCIAL
1.1. SISTEMAS GESTORES DE BASES DE DATOS (SGBD)
1.1.1. Definición de SGBD
Un sistema gestor de bases de datos o SGBD (aunque se suele utilizar más a
menudo las siglas DBMS procedentes del inglés, Data Base Management
System) es el software que permite a los usuarios procesar, describir, administrar
y recuperar los datos almacenados en una base de datos.
En estos Sistemas se proporciona un conjunto coordinado de programas,
procedimientos y lenguajes que permiten a los distintos usuarios realizar sus
tareas habituales con los datos, garantizando además la seguridad de los
mismos.
Ilustración 1: Funcionamiento Sistema Gestor de Base de Datos
El éxito del SGBD reside en mantener la seguridad e integridad de los datos.
Lógicamente tiene que proporcionar herramientas a los distintos usuarios. Entre
las herramientas que proporciona están:
Herramientas para la creación y especificación de los datos. Así como la
estructura de la base de datos.
Herramientas para administrar y crear la estructura física requerida en las
unidades de almacenamiento.
Herramientas para la manipulación de los datos de las bases de datos, para
añadir, modificar, suprimir o consultar datos.
Herramientas de recuperación en caso de desastre
Herramientas para la creación de copias de seguridad
10
Herramientas para la gestión de la comunicación de la base de datos
Herramientas para la creación de aplicaciones que utilicen esquemas externos
de los datos
Herramientas de instalación de la base de datos
Herramientas para la exportación e importación de datos
1.1.2. Niveles de abstracción de una base de datos
En cualquier sistema de información se considera que se pueden observar los
datos desde dos puntos de vista:
Vista externa. Esta es la visión de los datos que poseen los usuarios del
Sistema de Información.
Vista física. Esta es la forma en la que realmente están almacenados los
datos.
En un sistema orientado a procesos, los usuarios ven los datos desde las
aplicaciones creadas por los programadores. Esa vista pueden ser formularios,
informes visuales o en papel. Pero la realidad física de esos datos, tal cual se
almacenan en los discos queda oculta. Esa visión está reservada a los
administradores.
En el caso de los Sistemas de Base de datos, se añade una tercera vista, que es
la vista conceptual. Esa vista se sitúa entre la física y la externa. Se habla pues en
Bases de datos de la utilización de tres esquemas para representar los datos.
1.1.2.1. Esquema físico
Representa la forma en la que están almacenados los datos. Esta visión sólo la
requiere el administrador/a. El administrador la necesita para poder gestionar
más eficientemente la base de datos.
1.1.2.2. Esquema Conceptual
Se trata de un esquema teórico de los datos en el que figuran organizados en
estructuras reconocibles del mundo real y en el que también aparece la forma
11
de relacionarse los datos. Este esquema es el paso que permite modelar un
problema real a su forma correspondiente en el ordenador.
Este esquema es la base de datos de todos los demás. Como se verá más
adelante es el primer paso a realizar al crear una base de datos. El esquema
conceptual lo realiza diseñadores/as o analistas.
1.1.2.3. Esquema externo
Se trata de la visión de los datos que poseen los usuarios y usuarias finales.
Esa visión es la que obtienen a través de las aplicaciones. Las aplicaciones
creadas por los desarrolladores abstraen la realidad conceptual de modo que
el usuario no conoce las relaciones entre los datos, como tampoco conoce
todos los datos que realmente se almacenan.
Realmente cada aplicación produce un esquema externo diferente (aunque
algunos pueden coincidir) o vista de usuario. El conjunto de todas las vistas de
usuario es lo que se denomina esquema externo global.
Ilustración 2: Niveles de Abstracción de una Base de Datos
1.1.2.4. Recursos Humanos de las Bases de Datos
12
Intervienen muchas personas en el desarrollo y manipulación de una base de
datos. Habíamos seleccionado cuatro tipos de usuarios (administradores/as,
desarrolladores, diseñadores/as y usuarios/as).
La clasificación de estos usuarios es la siguiente:
a. Informáticos
Lógicamente son los profesionales que definen y preparan la base de
datos.
Pueden ser:
Directivos/as. Organizadores y coordinadores del proyecto a
desarrollar y máximos responsables del mismo. Esto significa que
son los encargados de decidir los recursos que se pueden utilizar,
planificar el tiempo y las tareas, la atención al usuario y de dirigir
las entrevistas y reuniones pertinentes.
Analistas. Son los encargados de controlar el desarrollo de la base
de datos aprobada por la dirección. Normalmente son además los
diseñadores de la base de datos (especialmente de los esquemas
interno y conceptual) y los directores de la programación de la
misma.
Administradores/as de las bases de datos. Encargados de crear
el esquema interno de la base de datos, que incluye la planificación
de copia de seguridad, gestión de usuarios y permisos y creación
de los objetos de la base de datos.
Desarrolladores/as o programadores/as. Encargados de la
realización de las aplicaciones de usuario de la base de datos.
Equipo de mantenimiento. Encargados de dar soporte a los
usuarios en el trabajo diario (suelen incorporar además tareas
administrativas como la creación de copias de seguridad por
ejemplo o el arreglo de problemas de red por ejemplo).
b. Usuarios
13
Expertos/as. Utilizan el lenguaje de manipulación de datos (DML)
para acceder a la base de datos. Son usuarios que utilizan la base
de datos para gestión avanzada de decisiones.
Habituales. Utilizan las aplicaciones creadas por los
desarrolladores para consultar y actualizar los datos. Son los que
trabajan en la empresa a diario con estas herramientas y el objetivo
fundamental de todo el desarrollo de la base de datos.
Ocasionales. Son usuarios que utilizan un acceso mínimo a la base
de datos a través de una aplicación que permite consultar ciertos
datos. Serían por ejemplo los usuarios que consultan el horario de
trenes a través de Internet.
1.1.3. Estructura Multicapa
El proceso que realiza un SGBD está en realidad formado por varias capas que
actúan como interfaces entre el usuario y los datos. Fue el propio organismo
ANSI (en su modelo X3/SPARC que luego se comenta) la que introdujo una
mejora de su modelo de bases de datos en 1988 a través de un grupo de trabajo
llamado UFTG (User Facilities Task Group, grupo de trabajo para las facilidades
de usuario).
.
Ilustración 3: Estructura multicapa de las facilidades de usuario
14
Este modelo toma como objeto principal al usuario habitual de la base de datos y
modela el funcionamiento de la base de datos en una sucesión de capas cuya
finalidad es ocultar y proteger la parte interna de las bases de datos
Desde esta óptica para llegar a los datos hay que pasar una serie de capas que
desde la parte más externa poco a poco van entrando más en la realidad física de
la base de datos.
1.1.4. Modelos Conceptuales
a. Modelo Entidad Relación
Ya hemos visto anteriormente que existen varios esquemas a realizar para
poder representar en forma de base de datos informática un problema
procedente del ordenador.
En 1976 y 1977 dos artículos de Peter P. Chen presentan un modelo para
realizar esquemas que posean una visión unificada de los datos. Este modelo
es el modelo entidad/interrelación (entity/relationship en inglés) que
actualmente se conoce más con el nombre de entidad/relación (Modelo E/R o
ME/R, en inglés E/RM).
Posteriormente otros autores han añadido mejoras a este modelo lo que ha
producido una familia de modelos. La más aceptada actualmente es el
modelo entidad/relación extendido (ERE) que complementa algunas
carencias del modelo original. No obstante las diversas variantes del modelo
hacen que la representación de este modelo no sea muy estándar, aunque
hay ideas muy comunes a todas las variantes.
b. Componentes del Modelo Entidad Relación
Entidad.
Se trata de cualquier objeto u elemento (real o abstracto) acerca
del cual se pueda almacenar información en la base de datos. Es
15
decir cualquier elemento informativo que tenga importancia para
una base de datos.
Ejemplos de entidades son Pedro, la factura número 32456, el
coche matrícula 3452BCW, etc. Una entidad no es un propiedad
concreta sino un objeto que puede poseer múltiples propiedades
(atributos). Es decir “Sánchez” es el contenido del atributo Primer
Apellido de la entidad que representa a la persona Pedro
Sánchez Crespo con DNI 12766374. Una entidad es un objeto
concreto, no un simple dato: el coche que tenemos en el garaje
es una entidad, “Mercedes” sin embargo es la marca de ese
coche, es decir es un atributo de esa entidad.
Ilustración 4: Entidad y Conjunto de Entidades
En la actualidad se suele llamar entidad a lo que anteriormente se
ha definido como conjunto de entidades. De este modo
hablaríamos de la entidad PERSONAS. Mientras que cada
persona en concreto sería una ocurrencia o un ejemplar de la
entidad persona.
Representación Gráfica
16
En el modelo entidad relación los conjuntos de entidades
se representan con un rectángulo dentro del cual se
escribe el nombre de la entidad:
Ilustración 5: Representación de la Entidad Persona
Tipos de Entidades
Regulares. Son las entidades normales que tienen
existencia por sí mismas sin depender de otras. Su
representación gráfica es la indicada arriba
Débiles. Su existencia depende de otras. Es decir e.
Por ejemplo la entidad tarea laboral sólo podrá tener
existencia si existe la entidad trabajo. Las entidades
débiles se presentan de esta forma:
Ilustración 6: Entidad Débil
Relación
Representan asociaciones entre entidades. Es el elemento del
modelo que permite relacionar en sí los datos del mismo. Por
ejemplo, en el caso de que tengamos una entidad personas y
otra entidad trabajos. Ambas se realizan ya que las personas
trabajan y los trabajos son realizados por personas:
17
Ilustración 7: Ejemplo de Relación
Representación Gráfica
Ilustración 8: Representación Gráfica de Relación
Atributos
Describen propiedades de las entidades y las relaciones. En
este modelo se representan con elipses, dentro de las cuales
se coloca el nombre del atributo.
Esa elipse se une con una línea a las entidades. Ejemplo:
Ilustración 9: Atributos de Entidad y Relación
1.1.5. Modelos Lógicos
18
a. Modelo Relacional
Edgar Frank Codd definió las bases del modelo relacional a finales de los 60.
En 1970 publica el documento “A Relational Model of data for Large Shared
Data Banks” (“Un modelo relacional de datos para grandes bancos de datos
compartidos”). Actualmente se considera que ese es uno de los documentos
más influyentes de toda la historia de la informática. Lo es porque en él se
definieron las bases del llamado Modelo Relacional de Bases de Datos.
Anteriormente el único modelo teórico estandarizado era el Codasyl que se
utilizó masivamente en los años 70 como paradigma del modelo en red de
bases de datos.
Codd se apoya en los trabajos de los matemáticos Cantor y Childs (cuya
teoría de conjuntos es la verdadera base del modelo relacional). Según Codd
los datos se agrupan en relaciones (actualmente llamadas tablas) que es un
concepto que se refiere a la estructura que aglutina datos referidos a una
misma entidad de forma independiente respecto a su almacenamiento físico.
Lo que Codd intentaba fundamentalmente es evitar que las usuarias y
usuarios de la base de datos tuvieran que verse obligadas a aprender los
entresijos internos del sistema. Pretendía que los usuarios/as trabajaran de
forma sencilla e independiente del funcionamiento físico de la base de datos
en sí. Fue un enfoque revolucionario.
b. Relación o Tabla
Según el modelo relacional (desde que Codd lo enunció) el elemento
fundamental es lo que se conoce como relación, aunque más habitualmente
se le llama tabla (o también array o matriz). Codd definió las relaciones
utilizando un lenguaje matemático, pero se pueden asociar a la idea de tabla
(de filas y columnas) ya que es más fácil de entender.
No hay que confundir la idea de relación según el modelo de Codd, con lo que
significa una relación en el modelo Entidad/Relación de Chen. No tienen nada
que ver
Las relaciones constan de:
Atributos. Referido a cada propiedad de los datos que se almacenan
en la relación (nombre, dni,...).
19
Tuplas. Referido a cada elemento de la relación. Por ejemplo si una
relación almacena personas, una tupla representaría a una persona
en concreto.
Puesto que una relación se representa como una tabla; podemos entender
que las columnas de la tabla son los atributos; y las filas, las tuplas.
Tabla 1: Tabla de una Base Datos
Ejemplo real de relación o tabla clientes.
Tabla 2: Tabla Clientes de una Base de Datos
c. Paso de Entidad Relación a Modelo Relacional
Transformación de las Entidades
En principio las entidades fuertes del modelo Entidad Relación son
transformadas al modelo relacional siguiendo estas instrucciones:
Entidades. Las entidades pasan a ser tablas
Atributos. Los atributos pasan a ser columnas o atributos de la
tabla.
Identificadores principales. Pasan a ser claves primarias
Identificadores candidatos. Pasan a ser claves candidatas.
Esto hace que la transformación se produzca según este ejemplo:
20
Ilustración 10: Transformación de Entidad a esquema Relacional
Grafos Relacionales
Es un esquema relacional en el que hay líneas que enlazan las
claves principales con las claves secundarias para representar
mejor las relaciones. A veces se representa en forma de nodos de
grafos y otras se complementa el clásico. Ejemplo:
Ilustración 11: Grafo Relacional
d. Esquemas Relacionales
Se ha hecho muy popular la forma de presentar esquemas relacionales del
programa Microsoft Access.
21
Ilustración 12: Esquema Relacional de Ms Access
1.1.6. Principales Sistemas Gestores de Bases de Datos
1.1.6.1. SGBD de código Abierto (Libres)
a. MySQL
MySQL es un sistema gestor de bases de datos que se puede
encuadrar dentro de la categoría de los programas open-source.
Aparte de las características que definen MySQL como programa
open-source, existen aspectos que lo diferencian de otros productos
como, por citar uno conocido, Access. Los atributos a los que
hacemos referencia son:
Posibilidad de crear y configurar usuarios, asignando a cada
uno de ellos permisos diferentes.
Facilidad de exportación e importación de datos, incluso de la
base de datos completa.
Posibilidad de ejecutar conjuntos de instrucciones guardadas
en ficheros externos a la base de datos.
22
MySQL es muy utilizado en aplicaciones web, como Drupal o
phpBB, en plataformas (Linux/Windows-Apache-MySQL-
PHP/Perl/Python), y por herramientas de seguimiento de
errores como Bugzilla. Su popularidad como aplicación web
está muy ligada a PHP, que a menudo aparece en combinación
con MySQL. MySQL es una base de datos muy rápida en la
lectura cuando utiliza el motor no transaccional MyISAM, pero
puede provocar problemas de integridad en entornos de alta
concurrencia en la modificación. En aplicaciones web hay baja
concurrencia en la modificación de datos y en cambio el
entorno es intensivo en lectura de datos, lo que hace a MySQL
ideal para este tipo de aplicaciones. Sea cual sea el entorno en
el que va a utilizar MySQL, es importante adelantar monitoreos
sobre el desempeño para detectar y corregir errores tanto de
SQL como de programación.
b. POSTGRESQL
PostgreSQL es un sistema de gestión de base de datos relacional
orientada a objetos y libre, publicado bajo la licencia BSD.
Como muchos otros proyectos de código abierto, el desarrollo de
PostgreSQL no es manejado por una sola empresa sino que es
dirigido por una comunidad de desarrolladores y organizaciones
comerciales las cuales trabajan en su desarrollo. Dicha comunidad
es denominada el PGDG (PostgreSQL Global Development Group).
Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente
multiversión, por sus siglas en inglés) PostgreSQL permite que
mientras un proceso escribe en una tabla, otros accedan a la misma
tabla sin necesidad de bloqueos. Cada usuario obtiene una visión
consistente de lo último a lo que se le hizo commit.
1.1.6.2. SGBD Propietarios
a. MICROSOFT SQL SERVER
23
Es un motor de base de datos relacional, de libre descarga y
distribución, tanto para dispositivos móviles como para aplicaciones
escritorio. Especialmente orientada a sistemas ocasionalmente
conectados, ofrece unas características especialmente útiles para
clientes ligeros. La versión más reciente es SQL Server Compact 3.5
SP2. Anteriormente era conocida como SQL Server CE o SQL
Server Mobile. Desde la versión 2.0, el lanzamiento de SQL Server
Compact ha ido ligado al de Microsoft Visual Studio .NET.
Un motor de base de datos compacto y un sólido optimizador de
consultas.
Compatibilidad con la réplica de mezcla y el acceso a datos
remotos (RDA).
Integración con Microsoft SQL Server 2005.
Las herramientas de administración son Microsoft SQL Server
Management Studio y SQL Server Management Studio Express.
Integración con Microsoft Visual Studio 2005.
Acceso a datos remotos y réplica de mezcla para sincronizar
datos.
Microsoft Proveedor de datos .NET Framework y .NET Compact
Framework para SQL Server Compact Edition
(System.Data.SqlServerCe).
Compatibilidad con Microsoft ADO.NET y el proveedor de OLE
DB para SQL Server Compact Edition.
Un subconjunto de sintaxis SQL.
Se implementa como una base de datos incrustada en equipos
de escritorio, dispositivos móviles y Tablet PC.
b. MICROSOFT ACCESS
Microsoft Access 2010 se basa en la simplicidad, con plantillas listas
para que empiece a trabajar y herramientas eficaces para
24
mantenerse al día a medida que los datos crecen. Access 2010 le
otorga capacidades para aprovechar la información, incluso si no es
experto en bases de datos. Además, a través de bases de datos
web recién agregadas, Access amplía la eficacia de los datos,
facilitando el seguimiento, la creación de informes y el uso
compartido con otras personas. Los datos nunca estarán más allá
del explorador web más cercano.
Posibilidad de ampliación
Sencillez
Múltiples usuarios
Escalabilidad
1.2. TECNOLOGÍA .NET
1.2.1. Visual Studio .Net 2010
Desde la primera versión de .NET Framework, los equipos de desarrollo de estos
dos lenguajes han procurado marcar algunas diferencias entre ambos, siendo su
intención la de hacer de Visual Basic un lenguaje más atractivo al desarrollador de
aplicaciones de gestión, mientras que C# se pretendía dirigir a los programadores
más orientados hacia el desarrollo a más “bajo nivel”: componentes, servicios, etc.
Scott Wiltamuth, uno de los directores de la división de lenguajes de Visual Studio,
menciona que llevar estos objetivos a la práctica resultó más complicado de lo
esperado, debido a la presencia de lo que él denomina “poderosas fuerzas de
unificación” que han propiciado un cambio de orientación hacia el desarrollo en
paralelo de funcionalidades para los dos lenguajes, como:
La existencia de un entorno de desarrollo integrado y bloques de
construcción de aplicaciones comunes a ambos lenguajes.
La naturaleza orientada a objetos y el sistema de tipos común a los dos
lenguajes.
25
El hecho de que las principales áreas de innovación presente y futura en el
desarrollo de los lenguajes se reflejan en partes “exteriores” de los mismos,
como ocurre en el caso de LINQ.
A los elementos anteriores hay que añadir las demandas de las comunidades
de desarrolladores, ya que los programadores de VB querían aquellas
funcionalidades disponibles en C# de las que VB carecía, y viceversa.
Todo ello ha propiciado el cambio de estrategia que acabamos de mencionar,
que tiene el claro objetivo de que, independientemente del lenguaje que
utilicemos, podamos aprovechar toda la potencia que .NET Framework pone a
nuestra disposición.
1.2.2. .NET FRAMEWORK
.NET Framework es un entorno para construir, instalar y ejecutar servicios Web
y otras aplicaciones. Se compone de tres partes principales: el Common
Language Runtime, las clases Framework y ASP.NET
El .NET Framework es el corazón de .NET, cualquier cosa que queramos
hacer en cualquier lenguaje .NET debe pasar por el filtro cualquiera de las
partes integrantes del .NET Framework.
El Common Lenguage Runtime (CLR) es una serie de librerías dinámicas
(DLLs), también llamadas assemblies, que hacen las veces de las DLLs del
API de Windows así como las librerías runtime de Visual Basic o C++. Como
sabrás, y si no lo sabes ahora te lo cuento yo, cualquier ejecutable depende de
una forma u otra de una serie de librerías, ya sea en tiempo de ejecución como
a la hora de la compilación. Pues el CLR es eso, una serie de librerías usadas
en tiempo de ejecución para que nuestros ejecutables o cualquiera basado en
.NET puedan funcionar. Se acabó eso de que existan dos tipos de ejecutables:
los que son autosuficientes y no dependen de librerías externas o los que
necesitan de librerías en tiempo de ejecución para poder funcionar, tal es el
caso de las versiones anteriores de Visual Basic.
26
Por otro lado, la librería de clases de .NET Framework proporcionan una
jerarquía de clases orientadas a objeto disponibles para cualquiera de los
lenguajes basados en .NET, incluido el Visual Basic. Esto quiere decir que a
partir de ahora Visual Basic ya no será la "oveja negra" de los lenguajes de
programación, sino que tendrá a su disposición todas las clases disponibles
para el resto de los lenguajes basados en .NET, (o casi), con lo cual sólo nos
diferenciará del resto de programadores en la forma de hacer las cosas: ¡más
fáciles!
VB.NET ahora es totalmente un lenguaje orientado a objetos con herencia y
todo. También permite crear Threads o hilos o tramas de ejecución y otras
cosas que antes nos estaban vetadas.
Ilustración 13: .Net Framework
27
CAPITULO II
2. METODOLOGÍA
FASE I: VISIÓN Y ALCANCE DEL PROYECTO
2.1. Visión
La visión de este trabajo es desarrollar un sistema informático, que permita automatizar el
proceso de venta de productos de cómputo, haciendo uso de la tecnología .Net, descrita en el
capítulo anterior, así mismo del gestor de base de datos Microsoft Access.
2.2. Oportunidad de Negocio
En la actualidad las empresas dedicadas a las ventas necesitan automatizar sus
procesos para ello necesitan contar con sistemas informáticos que agilicen estos
procesos, además a cada momento se necesita información, los usuarios finales ya
sean vendedores hacen uso de un sistema de ventas, para consultar precios y
gestionar los pedidos, y finalmente entregar los informes. Pero existen aún algunas
empresas que todo este proceso no lo hacen de forma automático sino más bien, lo
hacen de forma manual, y esto genera bastante incomodad en los clientes. La
mayoría de pequeñas empresas tienen la noción que este servicio cuesta bastante
dinero, pero tienen que ver el lado positivo es decir la utilidad de contar con un
sistema informático dentro de su empresa.
2.3. Análisis de beneficios
Los beneficios que se obtienen al desarrollar un sistema informático para la gestión de
ventas de una empresa de dedicada a la venta de artículos de cómputo, son los
siguientes:
Reducción de costos y tiempo de desarrollo, debido a que en la actualidad se
cuenta con herramientas tecnológicas en nuestro caso se hizo uso de la
tecnología .Net, la cuales se pueden utilizar e integrar para obtener un producto a
bajo costo.
Reducción del costo de mantenimiento, debido a que detrás de estas herramientas
tecnológicas .Net, existe bastante información en la web.
Reducción de costo de integración, debido a que es factible integrarlo con otras
herramientas que permitan aumentar el nivel de seguridad, ya que todas estas
28
herramientas se basan en los estándares que les permute poder trabajar en
conjunto.
FASE II: PLANEAMIENTO
2.4. Modelo lógico de integración de tecnologías en el Sistema informático
Ilustración 14: Modelo Lógico de Sistema Informático
2.5. Descripción de componentes
2.5.1. Clientes
Son los usuarios que interactúan con el sistema informático, a través de
las GUI (Interfaz Gráfica de Usuario), o mejor dicho ventanas, ya sea para
enviar o recibir información. En nuestro caso los usuarios vienen a ser los
administradores de la base de datos y los vendedores encargados de
gestionar los pedidos.
2.5.2. Servidor de Aplicaciones
En nuestro caso se trata del IDE, visual Studio 2010, que permite
gestionar el código fuente, más aun el .net Framework, que es necesario
para la ejecución de la aplicación en cualquier ordenador que cuente con
dicho requerimiento. El lenguaje utilizado es visual Basic.Net. y el
framework usado fue el 4.0. es decir en esta parte se gestiona toda la
lógica del negocio, para permitir mostrar información al usuario final y
29
como también poder realizar consultas, insertar, actualizar, eliminar y
reportar, todos los datos que se necesiten en algún momento
determinado.
2.5.3. Servidor de Base de Datos
En nuestro caso se encarga de gestionar toda la data, es decir almacenar
el dispositivos secundarios, toda la información referente al proceso de
venta de productos de computo, en este trabajo se hizo uso del Gestor
Microsoft Access 2010, por su facilidad de integración con Visual Studio
.Net. En este gestor se implementó nuestra base de datos. La cual será
podrá ser accedida desde el servidor de aplicaciones que en este caso es
el lenguaje de programación visual Basic .Net, para ello hace uso del
ADO.NET, que provee dicha tecnología.
FASE III: DESARROLLO E IMPLEMENTACIÓN
2.6. Especificaciones Técnicas
Todos los componentes de nuestro sistema informático fueron implementados usando
la tecnología .Net y ADO.Net, para poder gestionar toda la data.
2.6.1. Características del Hardware
El Hardware utilizado para la implementación de los servidores, tiene las
siguientes características:
Fabricante del sistema: HP Pavillion
Modelo del sistema: dv4 -1413la
Tipo de sistema: PC basado en x32
Procesador: AMD Athlon x2 Dual-Core
RAM: 3GB
El Hardware utilizado, por el cliente es el siguiente:
Fabricante del sistema: TOSHIBA
Modelo del sistema: Satellite SP 69836R
Tipo de sistema: PC basado en x64
Procesador: Intel ( R) Centrino
RAM: 4GB
30
2.6.2. Características del Software
A continuación se detallara, cada de los componentes software utilizados,
para la implementación:
DESCRIPCIÓN NOMBRE VERSIÓN
Sistema Operativo Microsoft Windows Windows 7
Lenguaje de Programación Visual Basic .Net VB 10.0
IDE Visual Studio 2010
Sistema Gestor de Base de Datos Microsott Access 2010
Reportes Crystal Reports Crystal Reports 14.0
Tabla 3: Características del Software
2.7. Diseño e Implementación de la Base de Datos del Sistema Informático
2.7.1. Modelo Entidad Relación
Ilustración 15: Modelo Entidad Relación
2.7.2. Entidades o Tablas
31
Ilustración 16: Entidades o Tablas
2.7.3. Diccionario de Datos
2.7.3.1. Tabla Clientes
Atributo Tipo de dato Tamaño del
campo Descripción
codcliente
Autonumeracion
Entero Largo
Código del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
nombre
Texto
38
Nombre y Apellido completo del cliente, no permite valores nulos
dirección
Texto
45
Dirección completa del cliente, no permite valores nulo
DNI
Texto
11
El número del DNI del cliente, no permite valores nulos
teléfono
Texto
10
El número del teléfono fijo o celular, no permite valores nulos
Tabla 4: Descripción Tabla Clientes
32
2.7.3.2. Tabla Producto
Atributo Tipo de dato Tamaño del campo
Descripción
codproducto
Numero
Entero Largo
Código del Producto, es un correlativo y es la PK (clave primaria) no permite valores nulos
Serieproducto
Texto
80
Nombre de la serie del producto, no permite valores nulos
Marca
Texto
20
Nombre de la marca del producto, no permite valores nulo
Tipo
Texto
50
Nombre del Tipo del producto, no permite valores nulos
Stockactual
Numero
Entero Largo
Cantidad actual del producto en stock, no permite valores nulos
PreCosto
Moneda
--
Costo de cada Producto, no permite valores nulos
PreVenta
Moneda
--
Precio de venta de cada Producto, no permite valores nulos
FechActualizacion
Fecha/Hora
--
Se ingresa la fecha de la compra del Producto, no permite valores nulos
idProveedor
Numero
Entero Largo
Código del Proveedor y es FK (clave externa) no permite valores nulos
Tabla 5: Descripción Tabla Producto
2.7.3.3. Tabla Usuario
Atributo Tipo de dato Tamaño del campo
Descripción
Id
Autonumeracion
Entero Largo
Código del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
usuario
Texto
255
Tipo de Usuario (administrador / secretaria ), no permite valores nulos
clave
Texto
255
La clave del usuario, no permite valores nulo
nombre
Texto
255
El nombre del usuario, no permite valores nulos
apellido
Texto
255
El apellido del usuario, no permite valores nulos
Tabla 6: Descripción Tabla Usuario
33
2.7.3.4. Tabla Proveedor
Atributo Tipo de dato Tamaño del campo
Descripción
codproveedor
Numero
Entero Largo
Código del Proveedor , es un correlativo y es la PK (clave primaria) no permite valores nulos
rucproveedor
Texto
12
El número del RUC del Proveedor, no permite valores nulos
nombre
Texto
30
Nombre de la empresa del proveedor, no permite valores nulo
teléfono
Texto
10
Teléfono de la empresa del proveedor, no permite valores nulos
dirección
Texto
50
Dirección de la empresa, no permite valores nulos
Tabla 7: Descripción Tabla Proveedor
2.7.3.5. Tabla Venta
Atributo Tipo de dato Tamaño del campo
Descripción
IdVenta
Numero
Entero Largo
Código de la tabla venta , es un correlativo y es la PK (clave primaria) no permite valores nulos
idCliente
Texto
255
Código del Cliente y es FK (clave externa) no permite valores nulos
fechaVenta
Fecha/Hora
--
La fecha de la salida de la venta, no permite valores nulo
igv
Numero
Decimal
El IGV del producto a la venta, no permite valores nulos
Total
Numero
Decimal
El precio total de la venta, no permite valores nulos
Tabla 8: Descripción Tabla Venta
2.7.3.6. Tabla DetalleVenta
Atributo Tipo de dato Tamaño del campo
Descripción
IdVenta
Numero
Entero Largo
Código del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
idProducto
Numero
Entero Largo
Código del Producto y es FK (clave externa) no permite valores nulos
Cantidad
Numero
Entero Largo
La cantidad de productos vendidos, no permite valores nulo
precioVenta
Numero
Decimal
El precio del producto vendido, no permite valores nulos
Tabla 9: Descripción Tabla DetalleVenta
34
2.7.4. Modelo Relacional en Microsoft Access
Ilustración 17: Modelo Relacional en Access
2.7.4.1. Producto
Ilustración 18: Tabla Producto
36
2.7.4.4. DetalleVenta
Ilustración 21: Tabla DetalleVenta
2.7.4.5. Proveedor
Ilustración 22: Tabla Proveedor
2.7.4.6. Usuario
Ilustración 23: Tabla Usuario
37
2.8. Diseño e implementación del Sistema Informático
2.8.1. Diseño del formulario de Acceso al Sistema (FrmLogin)
Ilustración 24: Formulario de Acceso al Sistema
a. Elementos utilizados
Tipo de Control Nombre Asignado
ComboBox cboUsuario
Label lblUusuario lblPasssword
TextBox txtPasword
Button btnEntrar btnCancelar
PictureBox pbUsuario
Tabla 10: Elementos del Formulario de Acceso
Usamos un cuadro combinado para elegir el Usuario con cual vamos a
ingresar al sistema.
Usamos una caja de texto donde se ingresará el Password respectivo de
cada usuario
Usaremos un botón llamado ENTRAR en donde accederemos a nuestro
proyecto
Usaremos un botón SALIR sirve para cancelar el proceso de acceso
b. Módulo de Conexión a la Base de Datos Venta de Computadoras
Ilustración 25: Código Fuente Conexión Base Datos
38
c. Codificación del Formulario de Acceso (FrmLogin)
Ilustración 26: Código Fuente Formulario de Acesso
2.8.2. Formulario Principal (MDIPrincipal)
a. Diseño del formulario Principal
Ilustración 27: Formulario Principal del Sistema
39
b. Elementos utilizados
Tipo de Control Nombre Asignado
MenuStrip mnuPrincipal
Mantenimiento Clientes Producto Proveedor Venta Usuario
Consultas Clientes Producto Proveedor Venta Usuario
Movimientos Ventas
Reportes Clientes Producto Proveedor Venta Usuario
Tabla 11: Elementos Formulario Principal
c. Codificación en el Formulario Principal (MDIPrincipal)
Ilustración 28: Código Fuente Formulario Principal
40
2.8.3. Formulario de Mantenimiento de Clientes
a. Diseño de Formulario (FrmMantClientes)
Ilustración 29: Formulario Mantenimiento de Clientes
b. Elemento utilizados
Tipo de control Nombre
TextBox txtCodigo txtNombres txtDireccion txtDNI txtTelefono
Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir
DataGridView dgvClientes
GroupBox gbDatosClientes gbOpciones
Label lblTitulo lblListClientes
Ilustración 30: Elementos Formulario Mantenimiento Clientes
44
Ilustración 31: Código Fuente Formulario Mantenimiento de Clientes
2.8.4. Formulario de Mantenimiento de Productos
a. Diseño de Formulario Mantenimiento de Productos
Ilustración 32: Formulario Mantenimiento Productos
45
b. Elementos utilizados
Tipo de control Nombre
TextBox txtCodigo txtSerie txtStockActual txtPreCosto txtPreVenta
ComboBox cboMarca cboCategoria cboProveedor
DateTimePicker dtpFechAct
Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir
DataGridView dgvProductos
GroupBox gbDatosProductos gbOpciones
Label lblTitulo lblListProductos
Tabla 12: Componentes Formulario Mantenimiento de Productos
c. Condigo fuente en el Formulario Mantenimiento Productos
50
2.8.5. Formulario Mantenimiento de Proveedores
a. Diseño del formulario FrmMantProveedor
Ilustración 34: Formulario Mantenimiento de Proveedor
b. Elementos utilizados
Tipo de control Nombre
TextBox txtCodigo txtRUC txtSNombre txtTelefono txtDireccion
Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir
DataGridView dgvProveedor
GroupBox gbDatosProveedor gbOpciones
Label lblTitulo lblListProveedor
Ilustración 35: Componentes de Formulario Mantenimiento de Proveedores
54
2.8.6. Formulario Mantenimiento de Usuarios
a. Diseño del Formulario
b. Elementos utilizados
Tipo de control Nombre
TextBox txtCodigo txtUsuario txtClave txtNombres txtApellidos
Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir
DataGridView dgvUsuarios
GroupBox gbDatosUsuarios gbOpciones
Label lblTitulo lblListUsuarios
Ilustración 37: Componentes Formulario Mantenimiento de Usuarios
c. Código fuente del formulario FrmMantUsuarios
Imports System.Data Imports System.Data.OleDb Public Class FrmMantUsuarios Dim daCodUsu As OleDbDataAdapter Dim dr As DataRow ' Objeto DataRow
55
Dim registro As Integer Dim sw As Integer = 0 Dim ultimo As Integer
Private Sub FrmMantUsuarios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'cargar datagridview CargarDatos() 'cargar datos en las cajas de texto CargarDatosActualizados(0) habilitarControles(False) ActivarBotones(True, False, False, False, False) End Sub Sub ActivarBotones(ByVal bnuevo As Boolean, ByVal bagregar As Boolean, ByVal bactualizar As Boolean, ByVal beliminar As Boolean, ByVal bcancelar As Boolean) btnNuevo.Enabled = bnuevo btnAgregar.Enabled = bagregar btnActualizar.Enabled = bactualizar btnEliminar.Enabled = beliminar btnCancelar.Enabled = bcancelar End Sub Sub CargarDatos() daClientes = New OleDbDataAdapter("Select * from Usuario", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "Cliente") ultimo = dsClientes.Tables("cliente").Rows.Count - 1 dgvUsuarios.DataSource = dsClientes.Tables(0).DefaultView ConfigurarDataGridView() End Sub Sub ConfigurarDataGridView() dgvUsuarios.DefaultCellStyle.BackColor = Color.LightGreen dgvUsuarios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow End Sub Sub correlativo() Dim TblUsuarios As DataTable 'limpiarCliente() 'Limpiar los Controles daCodUsu = New OleDbDataAdapter("Select max(id) as codigo from usuario", conexion) daCodUsu.Fill(dsClientes, "codigousuario") TblUsuarios = dsClientes.Tables("codigousuario") Me.txtCodigo.Text = CInt(TblUsuarios.Rows(0).Item(0).ToString) + 1 TblUsuarios.Dispose() End Sub Sub limpiarUsuario() Me.txtUsuario.Clear() txtClave.Clear() txtNombres.Clear() txtApellidos.Clear() txtUsuario.Focus() End Sub Sub habilitarControles(ByVal estado As Boolean) Me.txtCodigo.Enabled = False Me.txtUsuario.Enabled = estado Me.txtClave.Enabled = estado Me.txtNombres.Enabled = estado Me.txtApellidos.Enabled = estado End Sub Sub Nuevo() Dim cad As String cad = "Insert into usuario values(@id,@usuario,@clave,@nombre,@apellidos)" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters
56
.Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text .Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Guardado Correctamente") CargarDatos() CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transacción") End If cmd.Parameters.Clear() : conexion.Close() End Sub Sub Actualizar() Dim cad As String cad = "update usuario set id=@id,usuario= @usuario,clave= @clave,nombre=@nombre,apellidos=@apellidos where id=@id" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters .Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text .Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Actualizado Correctamente") CargarDatos() CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transacción") End If cmd.Parameters.Clear() : conexion.Close() End Sub Sub Eliminar() If MessageBox.Show("Seguro de Borrar?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _ Windows.Forms.DialogResult.Yes Then Dim cad As String cad = "update usuario set id=@id,usuario= @usuario,clave= @clave,nombre=@nombre,apellidos=@apellidos where id=@id" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters .Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text
57
.Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Eliminado Correctamente") registro = Me.txtCodigo.Text - 1 CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transacción") End If cmd.Parameters.Clear() : conexion.Close() End If End Sub Public Sub CargarDatosActualizados(ByVal fila As Integer) Dim total As Integer Try Dim TblClientes As DataTable Dim dr As DataRow ' daClientes = New OleDbDataAdapter("Select * from usuario ", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "usuario") TblClientes = dsClientes.Tables("usuario") ' Para mostarar la posicion, contamos los registros de la tabla Idiomas_Ofertado total = TblClientes.Rows.Count '' Asignando una fila de datos "Registro" al DataRow dr = TblClientes.Rows(fila) ' Mostrando los datos desde el datarow txtCodigo.Text = dr("id") txtUsuario.Text = dr("usuario") txtClave.Text = dr("clave") txtNombres.Text = dr("nombre") txtApellidos.Text = dr("apellidos") Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Sub buscar() Dim total As Integer Dim codigo As String codigo = InputBox("Ingrese código a Buscar") If Len(codigo) = 1 Then codigo = "0" + codigo End If Try Dim TblClientes As DataTable Dim dr As DataRow ' daClientes = New OleDbDataAdapter("Select * from usuario where id='" & codigo & "'", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "Usuario") TblClientes = dsClientes.Tables("Usuario") ' Para mostarar la posicion, contamos los registros de la tabla Idiomas_Ofertado total = TblClientes.Rows.Count '' Asignando una fila de datos "Registro" al DataRow dr = TblClientes.Rows(0) ' Mostrando los datos desde el datarow txtCodigo.Text = dr("id") txtUsuario.Text = dr("usuario")
58
txtClave.Text = dr("clave") txtNombres.Text = dr("nombre") txtApellidos.Text = dr("apellidos") Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub verdetalle(ByVal fila As Integer) Try If dgvUsuarios.Rows.Count > 0 Then Me.txtCodigo.Text = dgvUsuarios.Item(0, fila).Value.ToString txtUsuario.Text = dgvUsuarios.Item(1, fila).Value.ToString txtClave.Text = dgvUsuarios.Item(2, fila).Value.ToString txtNombres.Text = dgvUsuarios.Item(3, fila).Value.ToString txtApellidos.Text = dgvUsuarios.Item(4, fila).Value.ToString Else dgvUsuarios.Visible = False End If Catch ex As Exception End Try dgvUsuarios.DefaultCellStyle.BackColor = Color.LightGoldenrodYellow dgvUsuarios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click habilitarControles(True) limpiarUsuario() correlativo() sw = 1 ActivarBotones(True, True, False, False, True) End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click buscar() ActivarBotones(True, False, True, True, True) End Sub Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click If sw = 1 Then Nuevo() ElseIf sw = 2 Then Actualizar() End If sw = 0 ActivarBotones(True, False, False, False, False) End Sub Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click sw = 2 habilitarControles(True) ActivarBotones(False, True, True, False, True) End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click Eliminar() End Sub Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click CargarDatosActualizados(0) habilitarControles(False) sw = 0 ActivarBotones(True, False, False, False, False) End Sub
59
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click If MsgBox("Desea salir?", vbInformation + vbYesNo, "Salir") = vbYes Then Close() End If End Sub Private Sub dgvUsuarios_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvUsuarios.CellMouseClick Try Dim f As Integer = dgvUsuarios.CurrentRow.Index verdetalle(f) Catch ex As Exception End Try End Sub End Class
Ilustración 38: Código Fuente Formulario Mantenimiento de Usuarios
2.8.7. Formulario de Búsqueda de Clientes
a. Diseño del Formulario FrmConClientes
Ilustración 39: Formulario de Búsqueda de Clientes
b. Elementos utilizados
Tipo de control Nombre
RadioButton rbtCodigo
rbtNombre
rbtDNI
TextBox txtDato
DataGridView dgvClientes
Label lblTitulo
Ilustración 40: Componentes Formulario Búsqueda de Clientes
60
c. Código Fuente en el Formulario FrmConClientes
Imports System.Data Imports System.Data.OleDb Public Class FrmConClientes Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Private Sub FrmConClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvCliente.ReadOnly = True End Sub Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtNombre.Click, rbtDNI.Click Select Case sender.name Case "rbtCodigo" strcampo = "codcliente" oper = "codigo" Case "rbtNombre" strcampo = "nombre" oper = "nombre" Case "rbtDNI" strcampo = "DNI" oper = "DNI" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvCliente.DataSource = Nothing txtDato.Enabled = True txtDato.Clear() txtDato.Focus() lblEncontrados.Text = "" End Sub Private Sub txtDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDato.TextChanged dgvCliente.DefaultCellStyle.BackColor = Color.LightGreen dgvCliente.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM cliente WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvCliente.DataSource = Nothing dgvCliente.Visible = False Exit Sub End If objDataAdapter = New OleDbDataAdapter(strSQL, conexion) If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Cliente") conexion.Close() Dim TblClientes As DataTable TblClientes = objDataSet.Tables("Cliente") If TblClientes.Rows.Count > 0 Then
61
Me.dgvCliente.Visible = True Me.dgvCliente.DataSource = objDataSet Me.dgvCliente.DataMember = "Cliente" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvCliente.DataSource = Nothing dgvCliente.Visible = False lblEncontrados.Text = 0 End If End Sub Private Sub rbtCodigo_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtCodigo.CheckedChanged Me.lblEncontrados.Text = "" End Sub Private Sub rbtNombre_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtNombre.CheckedChanged Me.lblEncontrados.Text = "" End Sub Private Sub rbtDNI_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtDNI.CheckedChanged Me.lblEncontrados.Text = "" End Sub End Class
Ilustración 41: Código Fuente Formulario Consulta de Clientes
2.8.8. Formulario de Búsqueda de Productos
a. Diseño de Formulario FrmConProductos
Ilustración 42: Formulario Búsqueda de Productos
b. Elementos utilizados
Tipo de control Nombre
RadioButton rbtCodigo
62
rbtPreVenta
rbtSerie
TextBox txtDato
DataGridView dgvProductos
Label lblTitulo
Tabla 13: Componentes del Formulario Búsqueda de Productos
c. Código fuente en el Formulario FrmConProductos
Imports System.Data Imports System.Data.OleDb Public Class FrmConProductos Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Dim marca() As String Dim categoria() As String Private Sub FrmConProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvProducto.ReadOnly = True cargarMarca() cargarCategoria() End Sub Sub cargarMarca() marca = {"<Seleccionar>", " GIGABYTE", " ASUS", "FOXCONN", "NVIDIA", "GAINWARD", "MICROSOFT", "LOGITECH", "LG", "SAMSUNG", "INTEL", "AMD"} cboMarca.Items.AddRange(marca) cboMarca.SelectedIndex = 0 'cboMarca.Enabled = False End Sub Sub cargarCategoria() categoria = {"<Seleccionar>", " Motherboards", " Graphics Cards", "Mouse", "Keyboard", "Monitor", "Microprocessors"} cboCategoria.Items.AddRange(categoria) cboCategoria.SelectedIndex = 0 'cboCategoria.Enabled = False End Sub Sub buscar() dgvProducto.DefaultCellStyle.BackColor = Color.LightGreen dgvProducto.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM producto WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvProducto.DataSource = Nothing dgvProducto.Visible = False Exit Sub End If objDataAdapter = New OleDbDataAdapter(strSQL, conexion) If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() objDataSet = New DataSet()
63
objDataAdapter.Fill(objDataSet, "producto") conexion.Close() Dim TblClientes As DataTable TblClientes = objDataSet.Tables("producto") If TblClientes.Rows.Count > 0 Then Me.dgvProducto.Visible = True Me.dgvProducto.DataSource = objDataSet Me.dgvProducto.DataMember = "producto" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvProducto.DataSource = Nothing dgvProducto.Visible = False lblEncontrados.Text = 0 End If End Sub Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtSerie.Click, rbtPrecioVenta.Click Select Case sender.name Case "rbtCodigo" strcampo = "codProducto" oper = "codigo" Case "rbtSerie" strcampo = "serieproducto" oper = "serie producto" Case "rbtPrecioVenta" strcampo = "PreVenta" oper = "Precio Venta" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvProducto.DataSource = Nothing txtDato.Enabled = True txtDato.Clear() txtDato.Focus() lblEncontrados.Text = "" End Sub Private Sub txtDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDato.TextChanged buscar() End Sub Private Sub cboCategoria_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboCategoria.SelectedIndexChanged Me.strcampo = "tipo" Me.txtDato.Text = cboCategoria.SelectedItem.ToString End Sub Private Sub cboMarca_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboMarca.SelectedIndexChanged Me.strcampo = "Marca" Me.txtDato.Text = cboMarca.SelectedItem.ToString End Sub End Class
Ilustración 43: Código Fuente Formulario Consulta de Clientes
64
2.8.9. Formulario de Búsqueda de Proveedores
a. Diseño del Formulario FrmConProveedores
Ilustración 44: Formulario Búsqueda de Proveedores
b. Elementos utilizados
Tipo de control Nombre
RadioButton rbtCodigo
rbtPreVenta
rbtSerie
TextBox txtDato
DataGridView dgvProductos
Label lblTitulo
Tabla 14: Componentes Formulario Búsqueda de Proveedores
c. Código fuente en el formulario FrmConProveedores
Imports System.Data Imports System.Data.OleDb Public Class FrmConProveedores Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Private Sub rbtCodigo_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtCodigo.CheckedChanged End Sub
65
Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtRUC.Click, rbtNombre.Click Select Case sender.name Case "rbtCodigo" strcampo = "codProveedor" oper = "codigo" Case "rbtNombre" strcampo = "nombre" oper = "nombre" Case "rbtRUC" strcampo = "rucproveedor" oper = "rucproveedor" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvProveedor.DataSource = Nothing txtDato.Enabled = True txtDato.Clear() txtDato.Focus() lblEncontrados.Text = "" End Sub Private Sub FrmConProveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvProveedor.ReadOnly = True End Sub Private Sub txtDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDato.TextChanged buscar() End Sub Sub buscar() dgvProveedor.DefaultCellStyle.BackColor = Color.LightGreen dgvProveedor.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM proveedor WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvProveedor.DataSource = Nothing dgvProveedor.Visible = False Exit Sub End If objDataAdapter = New OleDbDataAdapter(strSQL, conexion) If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "proveedor") conexion.Close() Dim TblClientes As DataTable TblClientes = objDataSet.Tables("proveedor") If TblClientes.Rows.Count > 0 Then Me.dgvProveedor.Visible = True Me.dgvProveedor.DataSource = objDataSet Me.dgvProveedor.DataMember = "proveedor" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvProveedor.DataSource = Nothing dgvProveedor.Visible = False lblEncontrados.Text = 0 End If End Sub End Class
Ilustración 45: Código Fuente Formulario Consulta de Proveedores
66
2.8.10. Formulario de Búsqueda de Ventas
a. Diseño del Formulario FrmConVenta
Ilustración 46: Formulario Consulta de Ventas
b. Elementos utilizados
Tipo de Control Nombre
TextBox txtCliente
txtDireccion
DataGridView dgvConVentas
Buttton btnBuscarVenta
Label lblSubTotVenta
lblIGV
lblTotalVenta
GroupBox gbDatosCliente
Tabla 15: Componentes Formulario Búsqueda de Ventas
67
c. Código Fuente del Formulario FrmConVenta
Imports System.Data Imports System.Data.OleDb Imports vb = Microsoft.VisualBasic Public Class FrmConVenta Public codVenta As Integer Private Sub Btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Buscar.Click 'Me.Enabled = False ' FrmBuscarVenta.MdiParent = MDIPrincipal1 FrmBuscarVenta.Show() DataGridView1.DataSource = Nothing DataGridView1.Rows.Clear() End Sub Public Sub Realizar_Calculo() '-------------->>>><<<<<------------------------' Dim Cantidad As Double Dim IGV, Total, MTotal, MVenta, MIGV As Double Dim Precio As Double MTotal = 0 MVenta = 0 MIGV = 0 lbl_vVenta.Text = 0 lbl_Igv.Text = 0 lbl_pVenta.Text = 0 For n As Integer = 0 To DataGridView1.RowCount - 1 Cantidad = Val(DataGridView1.Rows(n).Cells(0).Value.ToString()).ToString Precio = Val(DataGridView1.Rows(n).Cells(2).Value) Total = (Cantidad * Precio) Me.DataGridView1.Rows(n).Cells(3).Value = Total.ToString("##,##0.00") MTotal += Total Next lbl_vVenta.Text = MTotal.ToString("##,##0.00") IGV = (MTotal * Val(txt_igvM.Text)) / 100 lbl_Igv.Text = IGV.ToString("##,##0.00") Total = MTotal + IGV lbl_pVenta.Text = Total.ToString("##,##0.00") Convertir_Letras() End Sub Private Sub Convertir_Letras() If Me.DataGridView1.RowCount = 0 Then lbl_numletras.Text = "" Else Dim numero As String Dim cantidad As Integer = vb.Len(Me.lbl_pVenta.Text) numero = vb.Mid(lbl_pVenta.Text, 1, cantidad - 3) lbl_numletras.Text = "SON: " & Num2Text(numero) & " CON " & vb.Right(lbl_pVenta.Text, 2) & "/100 NUEVO SOLES" End If End Sub Private Sub FrmConVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class
Ilustración 47: Código Fuente Formulario Consulta de Ventas
68
2.8.11. Formulario de Consulta de Clientes para Formulario de Ventas
a. Diseño de Formulario Consulta de Clientes FrmCliClientes
Ilustración 48: Formulario Búsqueda de Cliente para Ventas
b. Elementos utilizados
Tipo de Control Nombre
TextBox txtNombre
DataGridView dgvConClientes
Tabla 16: Componentes del Formulario Consulta de Clientes para Ventas
c. Código Fuente en el Formulario FrmCliClientes
Imports System.Data Imports System.Data.OleDb Public Class FrmCliClientes Public codigoCliente As String Public nombre As String Public direccion As String Dim DV As DataView 'Instancio una VISTA Private Sub FrmCliClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim DA As New OleDbDataAdapter("Select codCliente,nombre,direccion from cliente", conexion) Dim DS As New DataSet DA.Fill(DS) DV = DS.Tables(0).DefaultView 'El DATASET lo pasamos al 'DataView() dgvClientes.DataSource = DV.Table() End Sub Private Sub dgvClientes_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvClientes.CellContentClick End Sub
69
Private Sub dgvClientes_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvClientes.CellDoubleClick codigoCliente = Me.dgvClientes.Item(0, dgvClientes.CurrentRow.Index()).Value.ToString() nombre = Me.dgvClientes.Item(1, dgvClientes.CurrentRow.Index()).Value.ToString() direccion = Me.dgvClientes.Item(2, dgvClientes.CurrentRow.Index()).Value.ToString() Me.Close() End Sub Private Sub txtNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNombre.TextChanged DV.RowFilter = "nombre like '%" & txtNombre.Text & "%'" End Sub End Class
Ilustración 49: Código de Fuente en el formulario Búsqueda de Cliente Ventas
2.8.12. Formulario de Consulta de Ventas para formulario de Ventas
a. Diseño de Formulario de Búsqueda de Ventas FrmBusVentas
Ilustración 50: Formulario Búsqueda de Ventas
b. Elementos utilizados
Tipo de control Nombre
Label lblDescripcion
DataGridView dgvVentas
Tabla 17: Componentes Formulario Búsqueda de Ventas
c. Código fuente en el Formulario FrmBusVentas
Imports System.Data Imports System.Data.OleDb Public Class FrmBuscarVenta
70
Public daVenta As OleDbDataAdapter Public tblVentas As New DataTable Public daDVenta As OleDbDataAdapter Public tblDVenta As New DataTable Public codVenta As Integer Private Sub FrmBuscarVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Cargar_Ventas() End Sub Private Sub Cargar_Ventas() 'LstVenta = objVentaBL.Listar_Venta Dim sql As String ' sql = "Select v.idVenta,c.nombre,c.direccion from venta V inner join Cliente C on (v.idCliente=c.codcliente)" sql = "SELECT Venta.IdVenta, Cliente.nombre, Cliente.direccion, Venta.fechaVenta, Venta.igv, Venta.Total FROM Cliente INNER JOIN Venta ON Cliente.codcliente = Venta.idCliente" daVenta = New OleDbDataAdapter(sql, conexion) daVenta.Fill(tblVentas) 'Me.DataGridView1.AutoGenerateColumns = False Me.DataGridView1.DataSource = tblVentas End Sub Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick Try Dim f As Integer = DataGridView1.CurrentRow.Index FrmConVenta.DataGridView1.DataSource = Nothing FrmConVenta.DataGridView1.Rows.Clear() verdetalle(f) Close() 'verdetalle1(f) 'TrackBar2.Value = f 'CargarDatos(f) Catch ex As Exception End Try End Sub Private Sub verdetalle(ByVal fila As Integer) Dim sql1 As String FrmConVenta.DataGridView1.DataSource = Nothing FrmConVenta.DataGridView1.Rows.Clear() Try If DataGridView1.Rows.Count > 0 Then codVenta = DataGridView1.Item(0, fila).Value.ToString FrmConVenta.codVenta =DataGridView1.Item(0, fila).Value.ToString FrmConVenta.txt_cliente.Text = DataGridView1.Item(1, fila).Value.ToString FrmConVenta.txt_direccion.Text = DataGridView1.Item(2, fila).Value.ToString sql1 = "SELECT DetalleVenta.Cantidad, PRODUCTO.Serieproducto+' '+' '+PRODUCTO.Marca+' '+' '+PRODUCTO.Tipo as Producto, DetalleVenta.precioVenta FROM PRODUCTO INNER JOIN DetalleVenta ON PRODUCTO.codproducto = DetalleVenta.idProducto where DetalleVenta.IdVenta= " & codVenta daDVenta = New OleDbDataAdapter(sql1, conexion) daDVenta.Fill(tblDVenta) FrmConVenta.DataGridView1.AutoGenerateColumns = False FrmConVenta.DataGridView1.DataSource = tblDVenta tblDVenta.Dispose() ' DataGridView1.Visible = False FrmConVenta.Realizar_Calculo() End If Catch ex As Exception End Try DataGridView1.DefaultCellStyle.BackColor = Color.LightGoldenrodYellow DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub End Class
Ilustración 51: Código Fuente Formulario Búsqueda de Ventas
71
2.8.13. Formulario de Gestión de Pedido
a. Diseño del Formulario FrmVenta
b. Elementos utilizados
Tipo de Control Nombre
Button btnNuevo,btnEliminar,btnLimpiar
btnGuardar,btnSalir, btnBusCliente
btnBusProductos
TextBox txtCliente,txtDireccio
txtDescripcion,txtStock,txtPreUnit
txtCantidad
Label lblSubTotVenta,lblIGV,lblTotalVenta
lblNumVenta, lblValorVentaLetras
DataGridView dgvPedido
Tabla 18: Componentes Formulario Gestión de Pedido
72
c. Código fuente en el Formulario FrmVenta
Imports vb = Microsoft.VisualBasic Imports System.Data Imports System.Data.OleDb Public Class FrmVenta Dim codproducto As Integer Dim codVenta As Integer Dim daCodVenta As OleDbDataAdapter Dim codCliente As String Private Sub txt_cliente_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_cliente.KeyDown 'Si se Presiono la Tecla F5 se llama a la ventana de Ayuda If e.KeyCode = Keys.F5 Then Dim Xayuda As New FrmCliClientes 'Instanciar al Formulario de 'esta(manera) ' puedo acceder a las variables que estan declarados 'en el Form3 Xayuda.ShowDialog() ' Me.txtCodigo.Text = Xayuda.codigoCliente codCliente = Xayuda.codigoCliente Me.txt_cliente.Text = Xayuda.nombre txt_direccion.Text = Xayuda.direccion End If End Sub Sub correlativo() Dim TblVenta As DataTable 'limpiarCliente() 'Limpiar los Controles dsClientes = New DataSet daCodVenta = New OleDbDataAdapter("Select max(idventa) as codigo from venta", conexion) daCodVenta.Fill(dsClientes, "CodigoVenta") TblVenta = dsClientes.Tables("CodigoVenta") lblVenta.Text = CInt(TblVenta.Rows(0).Item(0).ToString) + 1 codVenta = CInt(TblVenta.Rows(0).Item(0).ToString) + 1 'MsgBox("El codigo es" & codVenta) TblVenta.Dispose() End Sub Sub ActivarBotones(ByVal bnuevo As Boolean, ByVal beliminar As Boolean, ByVal blimpiar As Boolean, ByVal bguardar As Boolean) btnNuevo.Enabled = bnuevo Btn_Eliminar.Enabled = beliminar Btn_Limpiar.Enabled = blimpiar Btn_Guardar.Enabled = bguardar End Sub Private Sub FrmVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ActivarBotones(True, False, False, False) End Sub Private Sub Verificar_Cajas() If Trim(txtNombre.Text) = "" Then txtNombre.Focus() Exit Sub ElseIf Trim(txt_precio.Text) = "" Then txt_precio.Focus() Exit Sub ElseIf Trim(txtCantidad.Text) = "" Then txtCantidad.Focus() Exit Sub ElseIf vb.Right(Me.txt_precio.Text, 1) = "." Then MessageBox.Show("¡Esto no es un Precio Válido!!!", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information) txt_precio.Focus() Exit Sub ElseIf verificarstock() = True Then
73
txtCantidad.Focus() Exit Sub ElseIf Buscar_Producto_Gridview() = False Then MessageBox.Show("El Producto que intenta Agregar ya existe en la Lista" & Chr(13) & "Item Seleccionado en la Lista", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtNombre.Focus() Else Me.DataGridView1.Rows.Add(codproducto.ToString, Me.txtCantidad.Text, Trim(Me.txtNombre.Text), Me.txt_precio.Text) Realizar_Calculo() Limpiar() Me.txtCantidad.Focus() End If End Sub Private Sub Realizar_Calculo() '-------------->>>><<<<<------------------------' Dim Cantidad As Double Dim IGV, Total, MTotal, MVenta, MIGV As Double Dim Precio As Double MTotal = 0 MVenta = 0 MIGV = 0 lbl_vVenta.Text = 0 lbl_Igv.Text = 0 lbl_pVenta.Text = 0 For n As Integer = 0 To DataGridView1.RowCount - 1 Cantidad = Val(DataGridView1.Rows(n).Cells(1).Value.ToString()).ToString Precio = Val(DataGridView1.Rows(n).Cells(3).Value) Total = (Cantidad * Precio) Me.DataGridView1.Rows(n).Cells(4).Value = Total.ToString("##,##0.00") MTotal += Total Next lbl_vVenta.Text = MTotal.ToString("##,##0.00") IGV = (MTotal * Val(txt_igvM.Text)) / 100 lbl_Igv.Text = IGV.ToString("##,##0.00") Total = MTotal + IGV lbl_pVenta.Text = Total.ToString("##,##0.00") Convertir_Letras() End Sub Private Sub Convertir_Letras() If Me.DataGridView1.RowCount = 0 Then lbl_numletras.Text = "" Else Dim numero As String Dim cantidad As Integer = vb.Len(Me.lbl_pVenta.Text) numero = vb.Mid(lbl_pVenta.Text, 1, cantidad - 3) lbl_numletras.Text = "SON: " & Num2Text(numero) & " CON " & vb.Right(lbl_pVenta.Text, 2) & "/100 NUEVO SOLES" End If End Sub Private Function Buscar_Producto_Gridview() For n As Integer = 0 To Me.DataGridView1.RowCount - 1 If Me.DataGridView1.Rows(n).Cells(2).Value = Trim(Me.txtNombre.Text) Then DataGridView1.CurrentCell = DataGridView1.Rows(n).Cells(2) DataGridView1.Refresh() Return False Exit Function End If Next Return True
74
End Function Private Sub txt_Descripcion_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNombre.KeyDown 'Si se Presiono la Tecla F5 se llama a la ventana de Ayuda If e.KeyCode = Keys.F5 Then Dim Xayuda As New FrmProProducto 'Instanciar al Formulario de Xayuda.ShowDialog() Me.txtStock.Text = Xayuda.stock Me.txtNombre.Text = Xayuda.nombre txt_precio.Text = Xayuda.precio codproducto = Xayuda.codproducto End If End Sub Private Sub Limpiar() txtCantidad.Clear() txtNombre.Clear() txt_precio.Clear() txtStock.Clear() btnBProducto.Focus() End Sub Private Function verificarstock() As Boolean Dim valor As Boolean Dim a, b As Integer a = CInt(Me.txtStock.Text) b = CInt(Me.txtCantidad.Text.Trim) If a < b Then MsgBox("Ingrese una cantidad menor al stock") Me.txtCantidad.Clear() Me.txtCantidad.Focus() valor = True Else valor = False End If Return valor End Function Private Sub txtStock_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCantidad.KeyDown If e.KeyData = Keys.Enter Then Verificar_Cajas() End If End Sub Private Sub Btn_Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Eliminar.Click If Me.DataGridView1.RowCount <> 0 Then If MessageBox.Show("¿Realmente Desea Eliminar el Item Seleccionado?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then Me.DataGridView1.Rows.RemoveAt(Me.DataGridView1.CurrentRow.Index) End If End If Realizar_Calculo() End Sub Private Sub Btn_Limpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Limpiar.Click If Me.DataGridView1.RowCount <> 0 Then If MessageBox.Show("¿Realmente Desea Eliminar la Lista?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then Me.DataGridView1.Rows.Clear() End If End If Realizar_Calculo() End Sub
75
Sub GUARDAR() Dim cmV As New OleDbCommand() Dim cmDV As New OleDbCommand() Dim cmA As New OleDbCommand() Dim cad As String Dim cad1 As String Dim N As Integer Dim n1 As Integer cad = "Insert into Venta values(@IdVenta,@idCliente,@fechaVenta,@igv,@Total)" cad1 = "Insert into DetalleVenta values(@IdVenta,@idProducto,@Cantidad,@precioVenta)" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmV.CommandType = CommandType.Text cmV.CommandText = cad cmV.Connection = conexion cmDV.CommandType = CommandType.Text cmDV.CommandText = cad1 cmDV.Connection = conexion With cmV.Parameters .Add("@IdVenta", OleDbType.Integer).Value = codVenta .Add("@idCliente", OleDbType.VarChar).Value = codCliente .Add("@fechaVenta", OleDbType.Date).Value = Now .Add("@igv", OleDbType.Decimal).Value = CDbl(lbl_Igv.Text) .Add("@Total", OleDbType.Decimal).Value = CDbl(lbl_pVenta.Text) End With n1 = cmV.ExecuteNonQuery Dim i As Integer Dim cant As Integer cant = DataGridView1.Rows.Count MsgBox("Cantidad de Productos" & cant) For i = 0 To cant - 1 With cmDV.Parameters cmDV.Parameters.Clear() .Add("@IdVenta", OleDbType.Integer).Value = codVenta .Add("@idProducto", OleDbType.Integer).Value = CInt(Me.DataGridView1.Item(0, i).Value) .Add("@Cantidad", OleDbType.Integer).Value = CInt(Me.DataGridView1.Item(1, i).Value) .Add("@precioVenta", OleDbType.Decimal).Value = CDbl(Me.DataGridView1.Item(3, i).Value) End With N = cmDV.ExecuteNonQuery Next actualizarStock() If n1 = 1 Then MessageBox.Show("Registro Guardado Correctamente") Else MessageBox.Show("Error en la Transacción") End If cmV.Parameters.Clear() : conexion.Close() End Sub Sub limpiarVenta() txt_cliente.Clear() txt_direccion.Clear() txtNombre.Clear() txtStock.Clear() txt_precio.Clear() txtCantidad.Clear() lbl_vVenta.Text = "" lbl_Igv.Text = "" lbl_pVenta.Text = "" btnNuevo.Focus() End Sub
76
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click correlativo() ActivarBotones(False, True, True, True) End Sub Private Sub Btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Guardar.Click GUARDAR() ActivarBotones(True, False, False, False) DataGridView1.Rows.Clear() limpiarVenta() End Sub Private Sub btnBCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBCliente.Click Dim Xayuda As New FrmCliClientes 'Instanciar al Formulario de 'esta(manera) ' puedo acceder a las variables que estan declarados 'en el Form3 Xayuda.ShowDialog() ' Me.txtCodigo.Text = Xayuda.codigoCliente codCliente = Xayuda.codigoCliente Me.txt_cliente.Text = Xayuda.nombre txt_direccion.Text = Xayuda.direccion End Sub Private Sub btnBProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBProducto.Click Dim Xayuda As New FrmProProducto 'Instanciar al Formulario de 'esta(manera) ' puedo acceder a las variables que estan declarados 'en el Form3 Xayuda.ShowDialog() Me.txtStock.Text = Xayuda.stock Me.txtNombre.Text = Xayuda.nombre txt_precio.Text = Xayuda.precio codproducto = Xayuda.codproducto End Sub Sub actualizarStock() If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() Dim sql As String = "UPDATE producto SET Stockactual = Stockactual - @cantidad WHERE codproducto = @codproducto" Dim cmd As OleDbCommand = New OleDbCommand(sql, conexion) For Each row As DataGridViewRow In Me.DataGridView1.Rows Dim codproducto As Integer = CInt(row.Cells("codigo").Value) Dim cantidad As Integer = CInt(row.Cells("cantidad").Value) cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@cantidad", cantidad) cmd.Parameters.AddWithValue("@codproducto", codproducto) cmd.ExecuteNonQuery() Next cmd.Parameters.Clear() : conexion.Close() End Sub Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click If MsgBox("Desea salir?", vbInformation + vbYesNo, "Salir") = vbYes Then Close() End If End Sub End Class
Ilustración 52: Código Fuente Formulario de Venta
77
2.8.14. Formulario Reporte de Ventas
a. Diseño de Formulario FrmRptVentas
Ilustración 53: Formulario de Reporte de Ventas
b. Diseño de Reporte en Crystal Report rptVentas
Ilustración 54: Diseño de Reporte de Ventas
c. Código fuente en el Formulario FrmRptVentas
Public Class FrmRptVentas Private Sub FrmRptVentas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteVentas As New RptVentas reporteVentas.Refresh() crvVentas.ReportSource = reporteVentas End Sub End Class
Ilustración 55: Código Fuente Formulario Reporte de Ventas
78
2.8.15. Formulario Reporte de Clientes
a. Diseño de Formulario FrmRptClientes
Ilustración 56: Formulario Reporte de Clientes
b. Diseño de Reporte en Crystal Report rptClientes
Ilustración 57: Diseño de Reporte de Clientes
c. Código fuente en el formulario FrmRptClientes
Imports System.Data Imports System.Data.OleDb Public Class FrmRptClientes Private Sub FrmRptClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteClientes As New RptCliente reporteClientes.Refresh() crvClientes.ReportSource = reporteClientes End Sub End Class
Ilustración 58: Código Fuente Formulario Reporte de Clientes
79
2.8.16. Formulario Reporte de Productos
a. Diseño del Formulario Reporte de Productos
Ilustración 59: Formulario Reporte de Productos
b. Diseño de Reporte en Crystal Report rptProductos
Ilustración 60: Diseño de Reporte de Productos
c. Código Fuente en el Formulario FrmRptProductos
Public Class FrmRptProductos Private Sub FrmRptProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteProductos As New RptProductos reporteProductos.Refresh() crvProductos.ReportSource = reporteProductos End Sub End Class
Ilustración 61: Código Fuente Formulario Reporte de Productos
80
2.8.17. Formulario Reporte de Proveedores
a. Diseño del Formulario Reporte de Proveedores
Ilustración 62: Formulario de Reporte de Proveedores
b. Diseño de Reporte en Crystal Report rptProveedores
Ilustración 63: Diseño de Reporte de Proveedores
c. Código de fuente en el Formulario FrmRptProveedores
Public Class FrmRptProveedores Private Sub FrmRptProveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteProveedor As New rptProveedor reporteProveedor.Refresh() crvProveedor.ReportSource = reporteProveedor End Sub End Class
Ilustración 64: Código Fuente en el Formulario Reporte de Proveedores
81
CAPITULO III
3. CONCLUSIONES Y RECOMENDACIONES
3.1. CONCLUSIONES
Se creó un documento en el que se abordan de una forma general los
conceptos de base de datos, lenguaje de programación Visual Basic. Net, y el
desarrollo del Sistema Informático para Venta de Productos de cómputo.
El contar con un sistema informático dentro de una empresa; nos permite
automatizar los procesos de venta y consulta de productos, el cual genera
ventajas competitivas y nos entrega información en el menor tiempo posible.
Se determinó que es un tanto sencillo la integración de la Tecnología. Net,
para el desarrollo de aplicaciones, de escritorio, que son de mucha utilidad
hoy en día dentro las empresas dedicadas al rubro de ventas.
El sistema cuenta con varias funcionabilidades que facilitan al usuario la
comprensión y manejo del mismo.
3.2. RECOMENDACIONES
Que los usuarios que van a manejar el sistema tenga conocimientos básicos
en Informática y una previa capacitación a la utilización del mismo.
Para cualquier ayuda utilizar el manual de usuario.
Los vendedores o usuarios deben ser los únicos responsables de la
información que se ingresa al sistema para que no hayan confusiones.
Para que la implementación del sistema sea efectiva es recomendable que la
información se maneje con gran seguridad.
82
REFERENCIAS BIBLIOGRÁFICAS
[1] Programación Visual Basic .net CEVALLOS F, Javier Ed. AlgaOmega Grupo
Editor, S.A. México.
[2] Programación Visual Basic .net Carrasco Muñoz, Joel Ed. AG Editores SRL, Lima
2005
[3] Visual Basic .net 2005 Librería Editorial MACRO, Lima 2005
[4] Visual Basic .net 2005 Express Castañeda León, Juan José. Editorial RITISA
GRAF, Lima 2006.
[5] Desarrollando Aplicaciones .NET Oficina de Publicaciones de FIIS UNI PARA
WINDOWS CON ADO.NET 2005 Sistemas UNI, Lima. 2008.
[6] Microsoft Access 2010 en Profundidad, Pérez, María. Editorial AlfaOmega, RC Libros,
México 2011.
[7] Sistemas de Bases de Datos, Administración y Uso. Y.H. TSAJ, A Editorial: Prentice
Hall 1ª Edición México 1990
83
ANEXOS
1. FUNCIONAMIENTO DEL SISTEMA
1.1. INGRESO AL SISTEMA
Ilustración 65: Manejo Formulario Acceso al Sistema
1.2. FORMULARIO PRINCIPAL
Ilustración 66: Manejo Formulario Principal
84
1.3. Opciones del Menú Mantenimiento
1.3.1. Formulario de Mantenimiento de Clientes
Ilustración 67: Manejo de Formulario Mantenimiento de Clientes
1.3.2. Formulario de Mantenimiento de Productos
Ilustración 68: Manejo de Formulario de Mantenimiento de Productos
85
1.3.3. Formulario de Mantenimiento de Proveedores
Ilustración 69: Manejo de Formulario Mantenimiento de Proveedor
1.3.4. Formulario Mantenimiento de Usuarios
Ilustración 70: Manejo Formulario Mantenimiento de Usuarios
86
1.4. Opciones del Menú Consultas
1.4.1. Formulario Consulta de Clientes
Ilustración 71: Manejo de Consulta de Clientes
1.4.2. Formulario Consulta de Proveedores
Ilustración 72: Manejo de Consulta de Proveedores
1.4.3. Formulario Consulta de Productos
Ilustración 73: Manejo de Consulta de Productos
87
1.4.4. Formulario Consulta de Ventas
1.4.4.1. Formulario Búsqueda de Venta por Cliente
Ilustración 74: Manejo de Consulta de Ventas por Cliente
1.4.4.2. Formulario Consulta de Pedido por Cliente (Venta Realizada)
Ilustración 75: Manejo de Pedido por Cliente
88
1.5. Opciones del Menú Movimientos
1.5.1. Generación de Pedido (Ventas)
Ilustración 76: Manejo de Gestión Pedido (Venta)
1.5.1.1. Búsqueda de Clientes (Clic en el Botón Buscar Cliente)
Ilustración 77: Manejo de Cliente que realiza Pedido
89
1.5.1.2. Búsqueda de Productos (Clic en el Botón Buscar Productos)
Ilustración 78: Manejo de Selección de Productos
1.5.1.3. Generación del Pedido para un cliente
Ilustración 79: Gestión del Pedido por Cliente
90
1.6. Opciones del Menú Reportes
1.6.1. Reporte de Clientes
Ilustración 80: Reporte de Clientes
1.6.2. Reporte de Productos
Ilustración 81: Reporte de Productos
91
1.6.3. Reporte de Proveedores
Ilustración 82: Reporte de Proveedores
1.6.4. Reporte de Ventas
Ilustración 83: Reporte de Ventas
top related