ProyectoLaboratorioV

106
UNIVERSIDAD SAN ANTONIO ABAD DEL CUSCO FACULTAD DE CIENCIAS QUIMICAS, FISICAS Y MATEMATICAS CARRERA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS LABORATOTIO V ALUMNOS: Victor Gabriel Jalisto Camacho Wilfredo Márquez Boza DOCENTE: Arturo Cuba 1 SISTEMA DE GESTION DE PROFORMAS Y CONTROL DE VENTAS DE LA EMPRESA CRAZY CORP

Transcript of ProyectoLaboratorioV

Page 1: ProyectoLaboratorioV

UNIVERSIDAD SAN ANTONIO ABAD DEL CUSCO

FACULTAD DE CIENCIAS QUIMICAS, FISICAS Y MATEMATICAS

CARRERA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

LABORATOTIO V

ALUMNOS:

Victor Gabriel Jalisto Camacho

Wilfredo Márquez Boza

DOCENTE:

Arturo Cuba

CUSCO - 2009

1

SISTEMA DE GESTION DE PROFORMAS Y CONTROL DE VENTAS

DE LA EMPRESA CRAZY CORP

Page 2: ProyectoLaboratorioV

Tabla de contenido1. IDENTIFICACIÓN DEL PROBLEMA........................................................................................3

II. REQUERIMIENTOS DEL SISTEMA.-............................................................................3

III. MODELO CONCEPTUAL.................................................................................................20

IV. FLUJO DE ANALISIS.................................................................................................21

1.1. ANÁLISIS DE CASOS DE USO........................................................................................21

1.1.1. Descripción y Responsabilidad de las Clases de Análisis........................21

1.1.2. Caso de uso:......................................................................................................22

Diagramas de Actividad.........................................................................................22

Modelo de Análisis..................................................................................................22

Diagramas de Colaboración..................................................................................23

Diagramas de Actividad.........................................................................................23

Modelo de Análisis..................................................................................................24

Diagramas de Colaboración..................................................................................24

2. FLUJO DE DISEÑO..................................................................................................................25

2.1. DISEÑO DE DIAGRAMAS...............................................................................................25

2.1.1. Diagrama de Clases.........................................................................................25

2.1.2. Diagramas de Secuencia................................................................................26

V. FLUJO DE IMPLEMENTACIÓN.........................................................................................29

1. IMPLEMENTACIÓN DE LA CAPA FISICA.......................................................................29

DESCRIPCIÓN DE SERVICIOS.....................................................................................................36

2. IMPLEMENTACIÓN DE LA CAPA LÓGICA EN C#.................................................................56

3. IMPLEMENTACIÓN DE LA CAPA INTERFAZ EN C#.............................................................77

2

Page 3: ProyectoLaboratorioV

PRESENTACIÓN

El presente proyecto esta siendo elaborado por un grupo de trabajo conformado por Víctor Gabriel Jalisto Camacho, Wilfredo Márquez Boza, alumnos de la Carrera Profesional de Ingeniería Informática y de Sistemas, de la Universidad San Antonio Abad del Cusco.

Los cuales en el marco del desarrollo de la asignatura de Laboratorio V, hemos buscado una empresa real denominada CrazyCorp dedicada a la venta de equipos de cómputo y software informático, para aplicar los conocimientos aprendidos en la parte teórica y práctica del curso; realizando un sistema de información para dicha empresa en base a los requerimientos solicitados.

3

Page 4: ProyectoLaboratorioV

MODELO DEL NEGOCIO.-

1. IDENTIFICACIÓN DEL PROBLEMA

La empresa Crazy Corp ubicado en la calle Cruz Verde 459 Cuarto Piso oficina 417 Centro Comercial “El Carmen”, es una PYME del sector privado dedicada a la Comercialización de equipos de Computo, Desarrollo de Software especializado, sistemas para Internet, paginas Web, soporte técnico, Capacitación en Informática y Tecnologías de la Información. Cada vez que la empresa tiene que realizar una venta, ésta realiza una proforma dependiendo del tipo de venta que se realice: Computadora completa, Accesorios, Laptop, Accesorios para una Laptop, Software. Cada tipo de venta tiene diferentes especificaciones y para cada una de estas, hasta el momento, el vendedor era el que tenía que memorizar los precios de venta, ver compatibilidad entre las diferentes partes del computador, calcular un rango de ganancia, hacer el descuento, y por último llenar una factura o boleta que concretice la venta, etc. lo cual conlleva a muchos errores y perdidas en la Empresa.

Ante este problema hemos visto plantear un sistema que automatice la realización de estos procesos, es decir que permita al administrador ingresar todos los productos que van llegando a su almacén con los respectivos precios de compra y venta, realizar la proforma para cada cliente que al solicite (Incluso cuando no se vaya a realizar la venta) realizar los descuentos, y si la venta se concretiza realizar la facturación correspondiente.

II. REQUERIMIENTOS DEL SISTEMA.-

2.1.- Identificación de los requerimientos.-

R1.- Se requiere Concretizar Ventas

R2.- Se requiere Generar Proformas

R3.- Se requiere Actualizar el stock de Productos

R4.- Se requiere Generar Estadísticas de Venta

R5.- Se requiere Imprimir las Proformas

R6.- Se requiere Controlar la salida de los productos

R7.- Se requiere Verificar el Stock de Productos

R8.- Se requiere Autentificar Usuarios

R9.- Se requiere Registra Entrada de Artículos.

R10.- Se requiere Controlar el registro de todos los proveedores.

4

Page 5: ProyectoLaboratorioV

R11.- Se requiere Controlar el Registro de todos los clientes.

2.2.- Identificación de Procesos

Generar proformas de venta

Mediante este proceso el sistema brindará al cliente la posibilidad de escoger sus productos según sean compatibles o no, los costos de los productos que éste desea comprar y hacerle un descuento. Este proceso lo realiza el vendedor previa consulta al cliente según lo que éste último desee comprar.

Imprimir las Proformas

Las proformas deben ser impresas luego de que fueron propuestas por el sistema, esto se hará según el cliente las solicite o no.

Administrar el Stock de productos

Este proceso permitirá ingresar nuevas líneas de productos, modificar y borrar líneas. Si la línea de producto ya ha sido asignada a productos, dicho línea no podrá ser borrada.

Generar reportes

Este proceso de generar reportes está referido más a la parte de información estadística ya explicada en los requerimientos del usuario, se realiza en base los datos almacenados en la Base de Datos del sistema, se puede realizar cada mes o según el administrador de la empresa lo requiera .

Controlar salida de los productos (generar Factura y/o Boleta)

El sistema debe controlar la salida de cada producto actualizando así su respectivo stock, esto se realiza automáticamente producida una venta, el sistema debe registrar dicha salida con el respectivo documento de facturación, sea boleta o factura para cada tipo de usuario.

Verificar Stock de Productos

El sistema debe verificar que la cantidad solicitada por el cliente sea menor a la cantidad existente en el stock para poder así realizar una venta segura.

2.3.- Identificación de Actores

Administrador

5

Page 6: ProyectoLaboratorioV

Es el encargado de la empresa Crazy Corp, el cual tiene los privilegios para agregar los productos en su inventario de almacén y generar los reportes correspondientes para su uso.

Vendedor

Es un empleado por el administrador para realizar los servicios de venta de los productos, tiene privilegios para generar una proforma, imprimir proforma, generar factura, ver el estado de los productos en el almacén. Éste será evaluado por el administrador en la base a los reportes que emita el sistema.

Cliente

Es el comprador de la empresa, es aquel que requerirá una proforma o si lo desea solicitará la concretización de su compra con un documento de salida sea factura sí éste es una persona jurídica (tiene RUC como empresario) o una boleta si es persona natural.

6

Page 7: ProyectoLaboratorioV

2.4.- Casos de Uso de Alto Nivel

A continuación detallaremos sólo los casos de uso más importantes que identificamos:

2.4.1 Caso de uso 1:

Caso de uso : Realizar Proforma.

Actores : Vendedor.

Tipo : Primario

Resumen : El Describe la Acción mediante la cual el Vendedor lista las características del producto que el cliente desea adquirir y le proporciona el precio de venta. Este caso de uso inicia cuando un cliente solicita un producto indicando las características que prefiere. El vendedor realiza verifica si tiene algún producto con dichas características y le muestra el Precio.

7

Page 8: ProyectoLaboratorioV

Satisface el Requerimiento 2.

2.4.2 Caso de uso 2:

Caso de uso : Imprimir Proforma

Actores : Cliente.

Tipo : Secundario (Include)

Resumen : Describe la Acción mediante la cual el Vendedor genera una copia tangible (en papel) de las características del producto que el cliente desea adquirir.

Este Caso de Uso empieza cuando el cliente acepta el producto que el vendedor le ofrece. El Vendedor imprime las características del producto y se las entrega al cliente.

Satisface el Requerimiento 5

2.4.3 Caso de uso 3

Caso de uso : Actualizar Stock

Actores : Administrador

Tipo : Primario

Resumen : Proceso mediante el Cual el Actor Administrador Registra el ingreso, Modificación, eliminación, consulta de los productos disponibles de la Empresa Crazy Corp. Así mismo este Caso de Uso registra la salida de productos después de concluido una venta.

Este Caso de Uso Se realiza de dos formas:

Cada vez que el Administrador registra el ingreso (perdida y/o modificación del Stock) de Productos.

Cada vez que se realiza una venta, el sistema Actualiza el Stock del Artículo.

Satisface el Requerimiento 6

2.4.4 Caso de uso 4:

Caso de uso : Generar Reportes.

Actores : Administrador.

Tipo : Primario

8

Page 9: ProyectoLaboratorioV

Resumen : Acción mediante la cual el Actor Administrador obtiene las Estadísticas de Ventas del Día, Mes, Año, Productos más vendidos, Stock de Productos, etc.

Este Caso de Uso comienza cuando el administrador desea obtener Estadísticas de las Ventas Realizadas, Obtener Ganancias, y toda información que el sistema pueda brindar para la toma de decisiones.

Satisface el Requerimiento 4

2.4.5 Caso de uso 5:

Caso de uso : Generar Factura y/o Boletas.

Actores : Vendedor, Administrador.

Tipo : Secundario (Include)

Resumen : Proceso mediante el cual el actor Vendedor Genera el documento legal (Factura, Boleta) en el cual se transfiere la propiedad del producto al cliente.

Este Caso de Uso empieza cuando se concretiza una Venta. El vendedor pide los datos del cliente, éste le indica si es Persona Jurídica o Natural, Según sea el caso se imprime Factura o Boleta respectivamente, con los datos legales correspondientes.

Satisface el Requerimiento 1 y 6.

2.4.6 Caso de Uso 6

Caso de uso : Verificar Stock.

Actores : Vendedor.

Tipo : Secundario (include)

Resumen : Proceso mediante el cual el actor Vendedor antes de realizar una venta comprueba la cantidad existente en el stock para poder satisfacer el pedido que el cliente solicita.

Satisface el Requerimiento 7.

2.4.7 Caso de Uso 7

Caso de uso : Registrar Ingreso de Artículos.

Actores : Administrador

Tipo : Primario

9

Page 10: ProyectoLaboratorioV

Resumen : Acción mediante el cual el Administrador Registra la entrada de nuevos productos llegados al almacén.

Satisface el Requerimiento 9.

2.4.8 Caso de Uso 8

Caso de uso : Autentificar Usuario.

Actores : Administrador, Vendedor.

Tipo : Primario

Resumen : Acción mediante el cual el Administrador o el usuario se Identifican en el sistema para así poder tener mayores privilegios dentro de éste.

Pre-Condición.- El sistema pide identificación para ingresar al sistema.

2.5.- Casos de Uso Expandido

2.5.1 Caso de uso 1

Nombre : Realizar Proforma.

Actor(es) : Vendedor, Cliente.

Tipo : Primario.

Descripción: El cliente llega a la empresa con la lista de características del producto que desea comprar, el vendedor verifica si dicho artículo esta en el stock e imprime la pro-forma correspondiente para el Cliente.

Pre-Condición: El cliente llega a la empresa con al menos un producto en mente.

Vendedor Sistema1.- El Vendedor pide la información del producto al Cliente y las ingresa al Sistema.

3. - El Vendedor muestra los resultados de compatibilidad al cliente.

5. - El Vendedor muestra al

2. - El Sistema verifica la existe del producto con tales características.

4. - El sistema muestra todas las características relacionadas con el producto solicitado.

10

Page 11: ProyectoLaboratorioV

cliente las características del producto relacionado.

Flujo Alterno2. - No se encuentra el producto con dichas características.2.1. - El Vendedor informa al Cliente sobre la no-Existencia del producto con dichas características en el almacén de la empresa y sobre la compatibilidad del mismo.2.2. - El vendedor propone al Cliente productos con características similares.2. 3.- Se retorna al paso 4 del flujo Básico.

Post Condición: Ninguna

2.5.2 Caso de uso 2

Nombre : Imprimir Pro-Forma.

Actores : Vendedor.

Tipo : Secundario.

Resumen : Describe la Acción mediante la cual el Vendedor genera una copia tangible (en papel) de las características del producto que el cliente desea adquirir.

Este Caso de Uso empieza cuando el cliente acepta el producto que el vendedor le ofrece. El Vendedor imprime las características del producto y se las entrega al cliente.

Pre Condición.- El Vendedor ya tiene en pantalla el producto solicitado por el cliente con su respectiva descripción y características.

Vendedor Sistema

1. - El Vendedor Realiza la Impresión del documento para mostrárselo al Cliente.

2.- El Sistema imprime el documento.

2.5.3 Caso de Uso 3

Nombre : Actualizar Stock

11

Page 12: ProyectoLaboratorioV

Actores : Administrador.

Tipo : Primario

Resumen : Proceso mediante el Cual el Actor Administrador Registra el ingreso, Modificación, eliminación, consulta de los productos disponibles de la Empresa Crazy Corp. Así mismo este Caso de Uso registra la salida de productos después de realizada una venta.

Este Caso de Uso Se realiza de dos formas:

Cada vez que el Administrador registra el ingreso (perdida y/o modificación del Stock) de Productos.

Cada vez que se realiza una venta, el sistema Actualiza el Stock del inventario.

Precondición.- El administrador ya se ha Identificado en el Sistema.

Administrador Sistema

1.-El administrador busca la opción Actualizar e ingresa en el las modificación pertinentes.

3- El Administrador decide guardar los cambios realizados y elige esa opción.

2. - El sistema verifica la base de datos y Agrega, Modifica, Elimina algún producto según sea el caso.

4. - El sistema Guarda los cambios realizados y se cierra la opción de Actualizar.

2.5.4 Caso de Uso 4

Caso de uso : Generar Reportes.

Actores : Administrador.

Tipo : Primario

12

Page 13: ProyectoLaboratorioV

Resumen : Acción mediante la cual el Actor Administrador obtiene las Estadísticas de Ventas del Día, Mes, Año, Productos más vendidos, Stock de Productos, etc.

Este Caso de Uso comienza cuando el administrador desea obtener Estadísticas de las Ventas Realizadas, Obtener Ganancias, y toda información que el sistema pueda brindar para la toma de decisiones.

Pre-Condición.- El administrador ya se ha Identificado en el Sistema.

Administrador Sistema

1.-El administrador busca la opción generar Reportes y escoge dentro de él que cuadro estadística desea obtener para ayudarse a tomar decisiones y generar mejores resultados.

3- El Administrador guarda reportes para posteriores decisiones.

4. - El Administrador sale del sistema.

2. - El sistema verifica la opción seleccionada y según a esta opción realiza las consultas adecuadas para mostrar los resultados apropiados.

Flujo Alterno3. - El administrador no desea guardar los reportes generados.3. 1 Se avanza al paso 4 del flujo básico.

2.5.5 Caso de Uso 5

Caso de uso : Generar Factura y/o Boleta.

Actores : Vendedor.

Tipo : Primario

13

Page 14: ProyectoLaboratorioV

Resumen : Proceso mediante el cual el actor Vendedor Genera el documento legal (Factura, Boleta) en el cual se transfiere la propiedad del producto al cliente.

Este Caso de Uso empieza cuando se concretiza una Venta. El vendedor pide los datos del cliente, éste le indica si es Persona Jurídica o Natural, Según sea el caso se imprime Factura o Boleta respectivamente, con los datos legales correspondientes.

Pre-Condición.- El Cliente acepta el producto mostrado por el vendedor y se verifica la cantidad deseada en el stock.

Administrador Sistema

1.- El Vendedor pregunta si el usuario tiene RUC.

2.- El Vendedor pide los datos del Cliente y las ingresa al sistema.

5. - El vendedor entrega una copia de la impresión al Cliente.

3. - El sistema llena la factura o Boleta Correspondiente.

4. - El Sistema imprime dicho documento.

2.5.6 Caso de Uso 6

Caso de uso : Verificar Stock.

Actores : Vendedor.

Tipo : Secundario (include)

Resumen : Proceso mediante el cual el actor Vendedor antes de realizar una venta comprueba la cantidad existente en el stock para poder satisfacer el pedido que el cliente solicita.

Vendedor Sistema

1. - El vendedor escribe la cantidad de artículos que el cliente solicita.

14

Page 15: ProyectoLaboratorioV

3. - El Vendedor realiza la venta.

2. - El sistema muestra la cantidad existente en el stock y un mensaje de confirmación para realizar la venta.

Flujo Alterno3. - El Stock del Artículo no satisface la necesidad del cliente.3. 1 La venta no se realiza pero se le indica al cliente cuando llegara el artículo.

2.5.7 Caso de Uso 7

Caso de uso : Registrar Ingreso de Artículos.

Actores : Administrador

Tipo : Primario

Resumen : Acción mediante el cual el Administrador Registra la entrada de nuevos productos llegados al almacén.

Administrador Sistema

1.- El administrador ingresa el código del proveedor.

3.- El administrador ingresa todos los artículos adquiridos, ingresando también cantidad, valor de compra y otros datos.

2.- El sistema verifica la existencia de dicho código, si no existe la agrega.

4.- El sistema actualiza el stock correopodiente a dichos artículos ingresados.

2.5.8 Caso de Uso 8

Caso de uso : Autentificar Usuario.

Actores : Administrador, Vendedor.

Tipo : Primario

15

Page 16: ProyectoLaboratorioV

Resumen : Acción mediante el cual el Administrador o el usuario se Identifican en el sistema para así poder tener mayores privilegios dentro de éste.

Pre-Condición.- El sistema pide identificación para ingresar al sistema.

Administrador, Vendedor Sistema

1. - El administrador o Vendedor ingresar ID y contraseña para acceder al sistema.

4. - Este usuario accede al Sistema.

2. - El sistema verifica la existencia de los respectivos datos introducidos.

3. - El sistema envía un mensaje de confirmación indicando que puede acceder al sistema.

Flujo Alterno2. - El Id y Contraseña introducidos son incorrectos2. 1 El sistema manda un mensaje indicando el posible error.

2.6.- Diagramas de Análisis de Casos de Uso

16

Page 17: ProyectoLaboratorioV

17

Page 18: ProyectoLaboratorioV

18

Page 19: ProyectoLaboratorioV

19

Page 20: ProyectoLaboratorioV

III. MODELO CONCEPTUAL

PersonaApel lidoPApel lidoMNombresDNISexoDireccionTelefonoEmail

PJuridicaRazonSocialRUC

PNatural

ArticuloSoftware

Cod_ArticuloVersionTipo_SoftwareDescripcion

DocumentoTipo_DocNro_DocFechaCod_Trabajador

TrabajadorCod_TrabajadorNivelAccesoContraseñaProfesionCargo

1..*0..* 1..*0..*

1..11..1

1..1

1..1

1..1

ServicioDetalleNro_DocCod_ServicioDescripcionPrecioCod_Articulo

DocumentoServicio

Cod_Cliente

1..*1..*

ArticuloHardwareCod_ArticuloDescripcionTecnologiaModeloCod_TipoHardware

ClienteCod_Cliente

0..*

1..*

0..*

1..*

Tipo_ComputadorCod_TipoComputadorTipo_ComputadorDescripcion

Tipo_HardwareCod_TipoHardwareNombreDescripcion

1..*1..*

DocumentoSalida

Cod_Cliente

0..*

1..*

0..*

1..*

ComputadorCod_ComputadorCod_TipoComputadorDescripcion

1..*1..*

CaracteristicaHardware

Cod_TipoHardwareCod_CaracteristicaCaracteristicaConfiguracion1Configuracion2

1..*1..*

ProveedorCod_ProveedorRazon_SocialRUCDireccionTelefono

SalidaDetalleTipo_DocNro_DocCod_ArticuloCantidadPrec_Unit_Venta

1..*1..*Marca

Cod_MarcaMarcatTiempo_garantiaCoeficiente_Ganancia

ComputadorDetalle

Cod_ComputadorCod_ArticuloEspecificacion

1..*1..*

ArticuloDetalleCod_ArticuloCod_TipoHardwareCod_CaracteristicaEspecificacionCantidad

1..*1..*

DocumentoEntrada

Cod_Proveedor0..*0..*

ArticuloCod_ArticuloNombre_ArticuloTipo_ArticuloCod_MarcaUnid_MedPrecioStoxk

0..*0..*

1..*1..*

0..*0..*

0..*0..*

EntradaDetalleCod_ProveedorNro_DocCod_ArticuloCantidadPrecio_Unit

1..*1..*

0..*0..*

1..1

1..1

1..1

1..1

1..1

Vendedor Administrador

20

Page 21: ProyectoLaboratorioV

IV. FLUJO DE ANALISIS

1.1. ANÁLISIS DE CASOS DE USO

1.1.1.Descripción y Responsabilidad de las Clases de Análisis

CLASE DE INTERFAZ

NOMBRE RESPONSABILIDAD

IUFacturación Muestra la información de los datos de una factura (especificando el RUC del usuario)

Registra Nuevas Facturas

Permite consultar los datos de los artículos a agregar.

Manda la orden de impresión de la factura actual.

IUProformas Muestra información del cliente.

Permite llenar los datos de los artículos.

Muestra las características de los diferentes artículos.

Muestra artículos según sus compatibilidades.

Permite grabar, actualizar e imprimir proformas.

IDBoletas Muestra la información de

21

Page 22: ProyectoLaboratorioV

los datos de una Boleta.

Registra nuevas Boletas.

Permite consultar los datos de los artículos a agregar.

Manda la orden de impresión de la Bolera actual.

1.1.2.Caso de uso:

Realizar Proforma

Diagramas de Actividad

22

Page 23: ProyectoLaboratorioV

Modelo de Análisis

Cliente

Vendedor Interfaz de Usuario Computador

El cl iente proporciona losdetal les generales del computador y sus datos

Diagrama de clases que muestra las clases que realizan el caso de uso Realizar proforma

Fil trar articulo hardware comptatible

ArticuloHardware

Diagramas de Colaboración

: Interfaz de Usuario

: Cliente

: Vendedor : Fil trar articulo hardware comptatible

: Computador

: ArticuloHardware

1: Proporcionar detalles articulo 2: Transferi r los detalles

3: Crear objeto nuevo

4: Devolver objeto nuevo

5: Buscar Articulo Compatible

6: Devolver articulo compatible

7: Proporcionar articulos compatibles8: Mostrar articulos compatibles

9: Proporcionar datos del cliente10: Transferir los detalles del cl iente y sol icitar actual izacion

11: Transferir los detalles del cl iente y sol icitar actual izacion

12: Enviar reconocimiento13: Enviar reconocimiento14: Mostrar reconocimiento

Cliente proporciona datos del articulo que quiere comprar al vendedor para que los introduzca al sistema

Diagrama de colaboracion Realizar Proforma

Caso de uso: Generar Factura y/o Boleta

Diagramas de Actividad

23

Page 24: ProyectoLaboratorioV

Modelo de Análisis

Diagramas de Colaboración

24

Page 25: ProyectoLaboratorioV

: Vendedor : Interfaz usuario : Articulo : CalcularPrecio

: Marca

: Factura boleta

2: Crear objeto nuevo con datos de articulo

3: Transferi r datos de articulo

4: Calcular precio de articulo

5: Devolver precio de articulo

6: Trasferir datos de articulo y precio

7: Devolver factura o boleta

8: Devolver factura o boleta9: Devolver factura o boleta

1: datos del computador aceptados por el cl iente

10: Devolver factura o boleta

Diagrama de colaboracion generar factura o boleta

2. FLUJO DE DISEÑO

2.1. DISEÑO DE DIAGRAMAS

2.1.1.Diagrama de Clases

25

Page 26: ProyectoLaboratorioV

PersonaApel lidoPApel lidoMNombresDNISexoDireccionTelefonoEmail

PJuridicaRazonSocialRUC

PNatural

ArticuloSoftware

Cod_ArticuloVersionTipo_SoftwareDescripcion

DocumentoTipo_DocNro_DocFechaCod_Trabajador

TrabajadorCod_TrabajadorNivelAccesoContraseñaProfesionCargo

1..*0..* 1..*0..*

1..11..1

1..1

1..1

1..1

ServicioDetalleNro_DocCod_ServicioDescripcionPrecioCod_Articulo

DocumentoServicio

Cod_Cliente

1..*1..*

ArticuloHardwareCod_ArticuloDescripcionTecnologiaModeloCod_TipoHardware

ClienteCod_Cliente

0..*

1..*

0..*

1..*

Tipo_ComputadorCod_TipoComputadorTipo_ComputadorDescripcion

Tipo_HardwareCod_TipoHardwareNombreDescripcion

1..*1..*

DocumentoSalida

Cod_Cliente

0..*

1..*

0..*

1..*

ComputadorCod_ComputadorCod_TipoComputadorDescripcion

1..*1..*

CaracteristicaHardware

Cod_TipoHardwareCod_CaracteristicaCaracteristicaConfiguracion1Configuracion2

1..*1..*

ProveedorCod_ProveedorRazon_SocialRUCDireccionTelefono

SalidaDetalleTipo_DocNro_DocCod_ArticuloCantidadPrec_Unit_Venta

1..*1..*Marca

Cod_MarcaMarcatTiempo_garantiaCoeficiente_Ganancia

ComputadorDetalle

Cod_ComputadorCod_ArticuloEspecificacion

1..*1..*

ArticuloDetalleCod_ArticuloCod_TipoHardwareCod_CaracteristicaEspecificacionCantidad

1..*1..*

DocumentoEntrada

Cod_Proveedor0..*0..*

ArticuloCod_ArticuloNombre_ArticuloTipo_ArticuloCod_MarcaUnid_MedPrecioStoxk

0..*0..*

1..*1..*

0..*0..*

0..*0..*

EntradaDetalleCod_ProveedorNro_DocCod_ArticuloCantidadPrecio_Unit

1..*1..*

0..*0..*

1..1

1..1

1..1

1..1

1..1

Vendedor Administrador

2.1.2. Diagramas de Secuencia

26

Page 27: ProyectoLaboratorioV

27

Page 28: ProyectoLaboratorioV

28

Page 29: ProyectoLaboratorioV

V. FLUJO DE IMPLEMENTACIÓN

1. IMPLEMENTACIÓN DE LA CAPA FISICA

MODELO LOGICO

Computador

Cod_Comput... TComputador:varchar(6) No

Cod_TipoCo... TCod_TipoComputador:varchar(3) No

Descripcion varchar(30) Yes

Column Name Condensed Type Nullable

DocumentoSalida

Tipo_Doc TTipo_Doc:varchar(3) No

Nro_Doc TNro_Doc:varchar(9) No

Fecha datetime No

Cod_Cliente TCod_Cliente:varchar(6) No

Cod_Trabaj... TCod_Trabajador:varchar(6) No

Column Name Condensed Type Nullable

EntradaDetalle

Cod_Provee... TCod_Proveedor:varchar(6) No

Nro_Doc TNro_Doc:varchar(9) No

Cod_Articulo TCod_Articulo:varchar(9) No

Cantidad int No

Precio_Unit numeric(8, 2) No

Column Name Condensed Type Nullable

TipoHardware

Cod_TipoHa... TCod_TipoHardware:varchar(6) No

Nombre_Ha... varchar(20) No

Descripcion varchar(30) No

Column Name Condensed Type Nullable

Trabajador

Cod_Trabaj... TCod_Trabajador:varchar(6) No

ApellidoP varchar(25) No

ApellidoM varchar(25) No

Nombres varchar(30) No

DNI varchar(8) No

NivelAcceso varchar(2) Yes

Contraseña varchar(16) Yes

Prof_Ocu varchar(35) No

Cargo varchar(20) No

Email varchar(40) No

Column Name Condensed Type Nullable

SalidaDetalle

Tipo_Doc TTipo_Doc:varchar(3) No

Nro_Doc TNro_Doc:varchar(9) No

Cod_Articulo TCod_Articulo:varchar(9) No

Cantidad int No

Prec_Unit_V... numeric(8, 2) No

Column Name Condensed Type Nullable

Cliente

Cod_Cliente TCod_Cliente:v... No

RazonSocial varchar(30) Yes

RUC varchar(11) Yes

ApellidoP varchar(20) Yes

ApellidoM varchar(20) Yes

Nombres varchar(25) Yes

DNI varchar(8) Yes

Direccion varchar(30) Yes

Telefono varchar(12) Yes

Email varchar(40) Yes

Column Name Condensed Type Nullable

DocumentoEntrada

Cod_Provee... TCod_Proveedor:varchar(6) No

Nro_Doc TNro_Doc:varchar(9) No

Fecha datetime No

Cod_Trabaj... TCod_Trabajador:varchar(6) No

Column Name Condensed Type Nullable

Marca

Cod_Marca TCod_Marca:va... No

Marca varchar(20) No

Tiempo_Gar... varchar(10) No

Coef_Ganan... numeric(3, 2) No

Column Name Condensed Type Nullable

Articulo

Cod_Articulo TCod_Articulo:varchar(9) No

Nombre_Articulo varchar(20) No

Tipo_Articulo varchar(10) No

Cod_Marca TCod_Marca:varchar(3) No

UnidadMed varchar(12) No

Precio numeric(8, 2) No

Stock int No

Column Name Condensed Type Nullable

ArticuloHardware

Cod_Articulo TCod_Articulo:varchar(9) No

Modelo varchar(15) No

Descripcion varchar(50) No

Tecnologia varchar(15) Yes

Cod_TipoHardware TCod_TipoHardware:varchar(6) No

Column Name Condensed Type Nullable

ArticuloDetalle

Cod_Articulo TCod_Articulo:... No

Cod_TipoHa... TCod_TipoHar... No

Cod_Caracte... TCod_Caracter... No

Especificacion varchar(10) No

Cantidad varchar(3) Yes

Column Name Condensed Type Nullable

TipoComputador

Cod_TipoComputador TCod_TipoComputador:varchar(3) No

Tipo_Computador varchar(20) No

Descripcion varchar(30) No

Column Name Condensed Type Nullable

CaracteristicasHardware

Cod_TipoHa... TCod_TipoHardware:varchar(6) No

Cod_Caracte... TCod_Caracteristicas:varchar(4) No

Caracteristica varchar(20) No

Configuracio... varchar(6) Yes

Configuracio... varchar(6) Yes

Column Name Condensed Type Nullable

ComputadorDetalle

Cod_Computa... TComputador:varchar(6) No

Cod_Articulo TCod_Articulo:varchar(9) No

Especificacion varchar(50) No

Column Name Condensed Type Nullable

Proveedor

Cod_Provee... TCod_Proveedor:varchar(6) No

RazonSocial varchar(30) No

RUC varchar(11) No

Direccion varchar(25) No

Telefono varchar(12) No

Email varchar(40) Yes

PaginaWeb varchar(40) Yes

Column Name Condensed Type Nullable

ArticuloSoftware

Cod_Articulo TCod_Articulo:varchar(9) No

Version varchar(8) No

Tipo_Software varchar(15) No

Descripcion varchar(30) No

Column Name Condensed Type Nullable

29

Page 30: ProyectoLaboratorioV

1.- Tabla Trabajador.-

Descripción.- Esta tabla contiene todos los datos de todos trabajadores existentes el empresa crazy CORP.

Atributos

Primarios.-

Cod_Trabajador : TCod_Trabajador (varchar(8))Es Código Identificador que cada tupla de esta tabla tiene, es el que identifica a todos los trabajadores de esta empresa.

Otros Atributos.-

ApellidoP: Indica el apellido paterno de cada trabajador. ApellidoM: Indica el apellido Materno de cada trabajador. Nombres: Indica el Nombre de cada trabajador. DNI: Indica el DNI de cada trabajador. NivelAcceso: Indica el nivel de acceso con el que se accede al sistema. Contraseña: Indica la contraseña que cada trabajador tiene para poder acceder al

sistema. Prof_Ocu: Indica la ocupación profesional de cada trabajador. Cargo: Indica la ocupación profesional de cada trabajador. Email: Indica el e-mail de cada trabajador.

2.- Tabla Proveedor.-

Descripción.- Esta tabla contiene todos los datos de todos proveedores existentes el empresa crazy CORP.

Atributos

Primarios.-

Cod_Proveedor : TCod_Proveedor (varchar(8))

30

Page 31: ProyectoLaboratorioV

Es Código Identificador que cada tupla de esta tabla tiene, es el que identifica a todos los trabajadores de esta empresa.

Otros Atributos.-

RazonSocial: Indica la razón social de cada proveedor. RUC: Indica el RUC de cada proveedor. Dirección: Indica dirección (lugar) donde reside el proveedor. Teléfono: Indica teléfono del proveedor. E-mail: Indica el e-mail del proveedor. PaginaWeb: Indica la pagina Web.

3.- Tabla Marca.-

Descripción.- Esta tabla contiene la relación de todas las marcas de artículos existentes en el almacén de productos.

Atributos

Primarios.-

Cod_Marca : TCod_Marca (varchar(8))Es Código Identificador que cada tupla de esta tabla tiene, es el que identifica marcas de artículos existentes en el almacén.

Otros Atributos.-

Marca: Indica la nombre de la marca del articulo. Tiempo_Garantia: Indica el tiempo de garantía que el articulo con esa

marca ofrece. Coef_Ganancia: Indica el coeficiente con el que se tiene que

multiplicar para poder obtener el precio de venta, para que así pueda ganar la empresa.

4.- Tabla Articulo.-

Descripción.- Esta tabla contiene todos los datos de todos los artículos que existen.

Atributos

Primarios.-

Cod_Articulo : TCod_Articulo (varchar(8))Es Código Identificador que cada tupla de esta tabla tiene, es el que identifica a todos los artículos que existen en el almacén.

Otros Atributos.-

31

Page 32: ProyectoLaboratorioV

Nombre_Articulo: Indica el Nombre del articulo o producto. Tipo_Articulo : Indica el tipo del articulo, solo puede contener

uno de los tres siguientes valores: “Hardware”, “Software” o “Suministro”;

Cod_Marca: Indica el Código de la marca a la cual pertenece el articulo.

UnidadMed: Indica unidad en que se miden este tipo de artículos. Precio: Indica costo de este articulo. Stock: Indica la cantidad existente en el stock de productos, se

actualiza cada vez que hay ingresos y salidas.

5.- Tabla DocumentoEntrada.-

Descripción.- Esta tabla contiene todos los datos a nivel general de todos los documentos con los que se adquiere más productos.

Atributos

Primarios.-

Cod_Proveedor : TCod_Proveedor (varchar(8))Es Código uno de los Identificadores que esta tabla tiene, indica el identificador de cada proveedor.

Nro_Doc : TCod_Articulo(varchar(8))Es el otro de los Identificadores, Indica el Numero de documento con el que ingresa.

Otros Atributos.-

Fecha: Indica la fecha con el que ingresa el documento. Cod_Trabajador: Indica el código del vendedor que recepciona

esa compra.

6.- Tabla EntradaDetalle.-

Descripción.- Esta tabla contiene más atributos sobre un documento pero a un nivel mucho mayor, con mayor detalle.

Atributos

Primarios.-

Cod_Proveedor : TCod_Articulo (varchar(8))Es Código uno de los Identificadores que esta tabla tiene, indica el identificador de cada proveedor.

32

Page 33: ProyectoLaboratorioV

Nro_Doc : TCod_Articulo(varchar(8))Es el otro de los Identificadores, Indica el Numero de documento con el que ingresa.

Cod_Articulo : TCod_Articulo (varchar(8))Es Código uno de los Identificadores que esta tabla tiene, en el se tienen los identificadores de cada Articulo que se esta comprando.

Otros Atributos.-

Cantidad: Indica la cantidad de productos que están ingresando. Precio_Unit: Indica el costo por unidad del producto que se esta

comprando.

7.- Tabla Cliente.-

Descripción.- Esta tabla contiene todos los datos sobre los clientes de la empresa.

Atributos

Primarios.-

Cod_Cliente : TCod_Cliente (varchar(8))Es Código Identificador que cada tupla de esta tabla tiene, es el que identifica a todos los clientes de esta empresa.

Otros Atributos.-

RazonSocial: Indica la razón social de la empresa, si es que tiene de cada Cliente.

RUC: Indica el RUC, si es que el cliente es persona Jurídica. ApellidoP: Indica el Apellido Paterno del Cliente. ApellidoM: Indica el Apellido Materno del Cliente. Nombres: Indica los nombres de cada Cliente. DNI: Indica el DNI de cada cliente. Dirección: Indica el lugar físico donde reside el cliente. Teléfono: Indica el Numero telefónico del cliente. Email: Indica el e-mail de cada cliente.

8.- Tabla DocumentoSalida.-

Descripción.-. Esta tabla contiene todos los datos a nivel general de todos los documentos con los que se venden productos, es decir se registra toda salida de productos.

Atributos

Primarios.-

33

Page 34: ProyectoLaboratorioV

Tipo_Doc: TTipo_Doc (varchar(3))Es el código que representa que tipo de documento es el que se emite Ej.: Si es Factura es 001, si es boleta será 002, etc.

Nro_Doc : TCod_Articulo(varchar(8))Es el otro de los Identificadores, Indica el Numero de documento que se emite.

Otros Atributos.-

Fecha: Indica la fecha con el que se emite el documento. Cod_Cliente: Indica el código del Cliente que compra el

producto. Cod_Trabajador: Indica el código del vendedor que emite esa

venta.

9.- Tabla SalidaDetalle.-

Descripción.- Esta tabla contiene más atributos sobre un documento pero a un nivel mucho mayor, con mayor detalle.

Atributos

Primarios.-

Tipo_Doc: TTipo_Doc (varchar(3))Es el código que representa que tipo de documento es el que se emite Ej.: Si es Factura es 001, si es boleta será 002, etc.

Nro_Doc : TNro_Doc (varchar(8))Es el otro de los Identificadores, Indica el Numero de documento con el que se vende.

Cod_Articulo : TCod_Articulo (varchar(8))Es Código uno de los Identificadores que esta tabla tiene, en el se tienen los identificadores de cada Articulo que se esta comprando.

Otros Atributos.- Cantidad: Indica la cantidad de productos que se está vendiendo. Precio_Unit_Venta: Indica el costo por unidad del producto que

se esta vendiendo.

10.- Tabla TipoHardware.-

Descripción.- Esta tabla contiene una lista de todos los tipos de hardware existentes en el almacén de artículos.

Atributos

34

Page 35: ProyectoLaboratorioV

Primarios.-

Cod_TipoHardware: TCod_TipoHardware (varchar(8))Es el código identificador de esta tabla.

Otros Atributos.-

Nombre_Hardware: Indica el nombre que tiene este tipo de hardware.

Descripción: Indica una descripción somera sobre este tipo de hardware.

11.- Tabla CaracteristicasHardware.-

Descripción.- Esta tabla contiene toda la información sobre la compatibilidad que un tipo de articulo hardware puede aceptar. Indicando en que se basa esa compatibilidad.

Atributos

Primarios.-

Cod_TipoHardware: TCod_TipoHardware (varchar(8))Es uno de los códigos identificadores que indica con que tipo de hardware esta relacionada esta característica.

Cod_Caracteristicas: TCod_ TCod_Caracteristicas (varchar(8))Es el código identificador de la característica hardware.

Otros Atributos.-

Característica: Indica en que se basa esta característica. Configuracion1: Indica con que otro Tipo de Hardware es

compatible este tipo de hardware. Configuracion2: Indica un segundo tipo de compatibilidad (si

los hubiere) de este tipo de hardware.12.- Tabla ArticuloHardware.-

Descripción.- Contiene la información de todos los artículos que sean del tipo de articulo dentro del almacén de la empresa Ej. Hardware, Software, Suministro.

Atributos

Primarios.-

Cod_Articulo: TCod_Articulo(varchar(8))Es el código identificador que de cada articulo hardware.

Otros Atributos.-

35

Page 36: ProyectoLaboratorioV

Modelo: Indica el modelo de este articulo hardware. Descripcion: Indica una pequeña descripción sobre este articulo. Tecnologia: Indica la tecnología con la cual se fabrico este

articulo. Cod_TipoHardware: Indica el Tipo de hardware del articulo.

DESCRIPCIÓN DE SERVICIOS

Funciones.-

1 fnArticulosVendidos(CodArticuloInicial, CodArticuoFinal)Esta funcion nos devuelve una tabla de articulos, el cual tiene aumentado una columna que describe la cajntidad de ventas realizadas sobre esos articulos.

Parametros:

CodArticuloInicial varchar (8).-

Este parametro nos sirve para determinar desde que codigo empezara la lista resultante. Puede ser ‘*’ para especificar desde el inicio.

CodArticuloFinal varchar (8).-

Este parametro nos sirve para determinar hasta que codigo llegara la lista resultante. Puede ser ‘*’ para especificar hasta el final.

2 ArticulosVendidosFecha(mes, dia)Esta funcion nos devuelve una tabla de todos los articulo cuya venta se realizo en una determinada fecha pasada como argumento.

Parametros:

mes varchar (2).-

Este parametro nos sirve para determinar el mes de la fecha que se buscará. Puede ser ‘*’ para especificar todos los meses.

anio varchar (4).-

Este parametro nos sirve para determinar el año de la fecha que se buscará. Puede ser ‘*’ para especificar todos los años.

3 ArticulosMarca(MarcaIni, MarcaFin)Esta funcion nos devuelve una lista de todas los marcas existentes.

Parametros:

MarcaIni varchar (6).-

36

Page 37: ProyectoLaboratorioV

Este parametro nos sirve para determinar desde que marca empezara la lista resultante. Puede ser ‘*’ para especificar desde el inicio.

MarcaFin varchar (6).-

Este parametro nos sirve para determinar hasta que marca llegara la lista resultante. Puede ser ‘*’ para especificar hasta el final.

4 fnArticulosEnStock(Cantidad)Esta funcion nos devuelve una lista de todos los articulos que tengan en el stock una menor cantidad de productos que el parametro indicado.

Parametros:

Cantidad int.-

Este parametro nos sirve para determinar por ejemplo cuales son los articulos que se han acabado, es decir cantidad = 0;

5 fnProductosVendidosTipo(Tipo)Esta funcion nos devuelve una lista de todos los tipos de articulos con sus repectivos numero de ventas

Parametros:

Tipo varchar(8).-

Este parametro nos sirve para filtrar sobre que tipo de articulo deseamos obtener informacion, “*” si es para todos.

6 fnProductosVendidosMarca(MarcaIni, MarcaFin)Esta funcion nos devuelve una lista de todos las marcas articulos con sus repectivos numero de ventas realizadas.

Parametros:

MarcaIni varchar (10).-

Este parametro nos sirve para determinar desde que marca empezara la lista resultante. Puede ser ‘*’ para especificar desde el inicio.

MarcaFin varchar (10).-

Este parametro nos sirve para determinar hasta que marca llegara la lista resultante. Puede ser ‘*’ para especificar hasta el final.

7 fnCantidadVentasMesAnio(Cod_Trabajador, mes, anio)

37

Page 38: ProyectoLaboratorioV

Esta funcion nos devuelve la tabla con la cantidad de ventas realizadas por cada uno de los trabajadores En un determinado mes y anio.

Parametros:

Cod_Trabajador varchar (8).-

Este parametro nos sirve para determinar de que trabajador nos devolveran los resultados.

mes varchar (2).-

Este parametro nos sirve para determinar el mes de la fecha que se buscará. Puede ser ‘*’ para especificar todos los meses.

anio varchar (4).-

Este parametro nos sirve para determinar el año de la fecha que se buscará. Puede ser ‘*’ para especificar todos los años.

8 fnClientesDNI(DNI)Recupera todo los datos de un cliente con el DNI indicado como parametro.

Parametros:

DNI varchar (8).-

Este parametro nos sirve para filtrar sobre un DNI especifico.

9 fnProveedoresRUC(RUC)Recupera todo los datos de un Proveedor con el RUC indicado como parametro.

Parametros:

RUC varchar (8).-

Este parametro nos sirve para filtrar sobre un RUC especifico.

10 fnClientesCodigos(Cod_ClienteIni,Cod_ClienteFin)Recupera una tabla de clientes filtrando sus codigos desde uno inicial hasta uno final.

Parametros:

CodigoIni varchar (8).-

Este parametro nos sirve para determinar el codigo de cliente desde el cual empezara la busqueda. Puede ser ‘*’ para especificar desde el inicio.

CodigoFin varchar (8).-

38

Page 39: ProyectoLaboratorioV

Este parametro nos sirve para determinar el codigo de cliente en el cual acabara la busqeda. Puede ser ‘*’ para especificar hasta el final.

11 fnArticulosPorTipoHardware(Cod_TipoHardwareIni, Cod_TipoHardwareFin)

Function que devuelve los registros que pertenecen a un tipo de articulo Hardware Y muestra las caracteristicas generales del articulo.

12 fnCaracteristicasArticuloHardwareConfiguraciones(Cod_ArticuloHardwareIni , Cod_ArticuloHardwareFin )

Function que devuelve las características especificas de un Artículo de hardware y sus Configuraciones con otro hardware.

13 fnExtraerEspecificacionTipoHardwareConfiguracion(Cod_ArticuloHardwareIni, Cod_ArticuloHardwareFin, Cod_TipoHardware )

14 fnListaCaracteristicasArticuloHardCofigXTipoHard(Cod_TipoHardware)

Function que devuelve los articulos y sus características especificas y sus Configuraciones con otro hardware de un tipo de hardware

15 fnBuscarCaracteristicaEspecificaConfiguracion(Caracteristica, Especificacion, Cod_TipoHardware)

Funcion que permite buscar articulos que cumplan una caracteristica espedifica por tipo de hardware.

16 fnArticulos_CaracteristicaEspecifica_TipoHardware(Cod_TipoHardware,Especificacion)

Function que devuelve los articulos que tienen una característica especifica de un determinado Tipo de hardware.

5.1 Procedimientos Almacenados.-

1 spu_GenerarProforma @Cod_ArticuloHardware varchar(9)

Procedimiento que devuelve las características especificas de un Computador.

5.2 Triggers.-

1 tr_EntradaStock

2 tr_SalidaStock

3 tr_ArticuloDetalle_Descripcion1.

5.3 Scripts.-

/* ******************************************************************** CREACION DE LA BASE DE DATOS ******************************************************************** */

39

Page 40: ProyectoLaboratorioV

use mastergocreate database BDCrazyCorpon primary(name=BDCrazyCorp,size=5Mb,filename='D:\Data\BDCrazyCorp.mdf',maxsize=10Mb,filegrowth=1Mb)log on(name=BDCrazyCorp_Log,size=5Mb,filename='D:\Data\BDCrazyCorp_Log.ldf',maxsize=10Mb,filegrowth=1Mb)

/* ******************************************************************** CREACION DE TIPOS ******************************************************************** */use BDCrazyCorp

EXEC sp_addtype TCod_Trabajador, 'varchar(6)', 'not null'EXEC sp_addtype TCod_Proveedor, 'varchar(6)', 'not null'EXEC sp_addtype TCod_Marca, 'varchar(3)', 'not null'EXEC sp_addtype TCod_Articulo, 'varchar(9)', 'not null'EXEC sp_addtype TCod_Cliente, 'varchar(6)', 'not null'EXEC sp_addtype TNro_Doc, 'varchar(9)', 'not null'EXEC sp_addtype TCod_TipoHardware, 'varchar(6)', 'not null'EXEC sp_addtype TCod_Caracteristicas, 'varchar(4)', 'not null'EXEC sp_addtype TCod_TipoComputador, 'varchar(3)', 'not null'EXEC sp_addtype TComputador, 'varchar(6)', 'not null'EXEC sp_addtype TTipo_Doc, 'varchar(3)', 'not null'GO

/* ******************************************************************** CREACION DE TABLAS ******************************************************************** */

use BDCrazyCorp

create table Trabajador(Cod_Trabajador TCod_Trabajador,

ApellidoP varchar(25) not null,ApellidoM varchar(25) not null,Nombres varchar(30) not null,DNI varchar(8) not null,NivelAcceso varchar(2) ,Contraseña varchar(16) ,Prof_Ocu varchar(35) not null,Cargo varchar(20) not null,Email varchar(40) not null,

Primary Key(Cod_Trabajador))

create table Proveedor(Cod_Proveedor TCod_Proveedor,

RazonSocial varchar(30) not null,RUC varchar(11) not null,Direccion varchar(25) not null,

40

Page 41: ProyectoLaboratorioV

Telefono varchar(12) not null,Email varchar(40) ,PaginaWeb varchar(40) ,

Primary Key(Cod_Proveedor))

create table Marca(Cod_Marca TCod_Marca,

Marca varchar(20) not null,Tiempo_Garantia varchar(10) not null,Coef_Ganancia numeric(3,2) not null,

Primary Key(Cod_Marca))

create table Articulo (Cod_Articulo TCod_Articulo,

Nombre_Articulo varchar(20) not null,Tipo_Articulo varchar(10)

default 'Hardware'Check (Tipo_Articulo in ('Hardware','Software','Suministro')) not null,

Cod_Marca TCod_Marca,UnidadMed varchar(12) not null,Precio numeric(8,2) not null,Stock int

not null,

Primary Key(Cod_Articulo),Foreign Key(Cod_Marca) references Marca(Cod_Marca)

)

create table DocumentoEntrada(Cod_Proveedor TCod_Proveedor, Nro_Doc TNro_Doc,

Fecha datetime not null,Cod_Trabajador TCod_Trabajador,

Primary Key(Cod_Proveedor, Nro_Doc),Foreign Key(Cod_Proveedor) references Proveedor(Cod_Proveedor),Foreign Key(Cod_Trabajador) references Trabajador(Cod_Trabajador)

)

create table EntradaDetalle(Cod_Proveedor TCod_Proveedor, Nro_Doc TNro_Doc, Cod_Articulo TCod_Articulo,

Cantidad intnot null,

Precio_Unit numeric(8,2) not null,

Primary Key(Cod_Proveedor, Nro_Doc, Cod_Articulo),Foreign Key(Cod_Proveedor, Nro_Doc) references

DocumentoEntrada(Cod_Proveedor, Nro_Doc),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

create table Cliente(Cod_Cliente TCod_Cliente,

41

Page 42: ProyectoLaboratorioV

RazonSocial varchar(30) ,RUC varchar(11)

,ApellidoP varchar(20) ,ApellidoM varchar(20) ,Nombres varchar(25)

,DNI varchar(8)

,Direccion varchar(30) ,Telefono varchar(12) ,Email varchar(40) ,

Primary Key(Cod_Cliente))

create table DocumentoSalida(Tipo_Doc TTipo_Doc, Nro_Doc TNro_Doc,

Fecha datetime not null,Cod_Cliente TCod_Cliente,Cod_Trabajador TCod_Trabajador,

Primary Key(Tipo_Doc,Nro_Doc),Foreign Key(Cod_Cliente) references Cliente(Cod_Cliente),Foreign Key(Cod_Trabajador) references Trabajador(Cod_Trabajador)

)

create table SalidaDetalle(Tipo_Doc TTipo_Doc, Nro_Doc TNro_Doc, Cod_Articulo TCod_Articulo,

Cantidad intnot null,

Prec_Unit_Venta numeric(8,2) not null,

Primary Key(Tipo_Doc, Nro_Doc, Cod_Articulo),Foreign Key(Tipo_Doc, Nro_Doc) references DocumentoSalida(Tipo_Doc, Nro_Doc),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

create table TipoHardware (Cod_TipoHardware TCod_TipoHardware,

Nombre_Hardware varchar(20) not null,Descripcion varchar(30) not null,

Primary Key(Cod_TipoHardware))

create table CaracteristicasHardware (Cod_TipoHardware TCod_TipoHardware, Cod_Caracteristicas TCod_Caracteristicas,

Caracteristica varchar(20) not null,Configuracion1 varchar(6) ,Configuracion2 varchar(6) ,

Primary Key(Cod_TipoHardware, Cod_Caracteristicas),Foreign Key(Cod_TipoHardware) references TipoHardware(Cod_TipoHardware)

)

create table ArticuloHardware (Cod_Articulo TCod_Articulo,

42

Page 43: ProyectoLaboratorioV

Modelo varchar(15) not null,Descripcion varchar(50) not null,Tecnologia varchar(15) ,Cod_TipoHardware TCod_TipoHardware,

Primary Key(Cod_Articulo),Foreign Key(Cod_TipoHardware) references TipoHardware(Cod_TipoHardware),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

create table ArticuloDetalle(Cod_Articulo TCod_Articulo, Cod_TipoHardware TCod_TipoHardware, Cod_Caracteristicas TCod_Caracteristicas,

Especificacion varchar(10) not null,Cantidad varchar(3) ,

Primary Key(Cod_Articulo, Cod_TipoHardware, Cod_Caracteristicas),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo),Foreign Key(Cod_TipoHardware, Cod_Caracteristicas) references CaracteristicasHardware(Cod_TipoHardware, Cod_Caracteristicas)

)

create table ArticuloSoftware(Cod_Articulo TCod_Articulo,

Version varchar(8) not null,Tipo_Software varchar(15) not null,Descripcion varchar(30) not null,

Primary Key(Cod_Articulo),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

create table TipoComputador (Cod_TipoComputador TCod_TipoComputador,

Tipo_Computador varchar(20) not null,Descripcion varchar(30) not null,

Primary Key(Cod_TipoComputador))

create table Computador (Cod_Computador TComputador,

Cod_TipoComputador TCod_TipoComputador,Descripcion varchar(30),

Primary Key(Cod_Computador),Foreign Key(Cod_TipoComputador) references

TipoComputador(Cod_TipoComputador))

create table ComputadorDetalle(Cod_Computador TComputador, Cod_Articulo TCod_Articulo,

Especificacion varchar(50) not null,

Primary Key(Cod_Computador, Cod_Articulo),Foreign Key(Cod_Computador) references Computador(Cod_Computador),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

create table ArticuloSuministro

43

Page 44: ProyectoLaboratorioV

(Cod_Articulo TCod_Articulo,Descripcion varchar(30) not null,Uso varchar(12)

,Interfaz varchar(12) ,Hardware_Asoc varchar(20) ,

Primary Key(Cod_Articulo),Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)

)

/* ******************************************************************** INGRESO DE DATOS ******************************************************************** */

GO

USE BDCRAZYCORP

INSERT INTO Proveedor VALUES('100','DELTRON','24154578485','Jr. de la Union, Lima','01847548754','','')INSERT INTO Trabajador VALUES('100','Jalisto','Camacho','Victor Gabriel','42467849','1','123456','Ing. Informático y de Sistemas','Gerente General','[email protected]')

INSERT INTO Marca VALUES('100','INTEL','1 AÑO',0.10)INSERT INTO Marca VALUES('200','ASROCK','1 AÑO',0.90)INSERT INTO Marca VALUES('300','AMD','2 AÑOS',0.10)INSERT INTO Marca VALUES('400','KINGSTON','1 AÑO',0.90)INSERT INTO Marca VALUES('500','SEAGATE','3 AÑOS',0.90)INSERT INTO Marca VALUES('600','SAMSUNG','2 AÑOS',0.90)INSERT INTO Marca VALUES('700','DLINK','1 AÑO',0.90)INSERT INTO Marca VALUES('800','HP','1 AÑO',0.90)INSERT INTO Marca VALUES('900','LG','1 AÑO',0.90)INSERT INTO Marca VALUES('950','TRINITRON','1 AÑO',0.90)

INSERT INTO TipoHardware VALUES('DD','DISCO DURO','Dispositovo para guardar')INSERT INTO TipoHardware VALUES('MP','MICROPROCESADOR','Dispositivo')INSERT INTO TipoHardware VALUES('MR','MEMORIA RAM','Dispositivo')INSERT INTO TipoHardware VALUES('PM','PLACA MADRE','Dispositivo')INSERT INTO TipoHardware VALUES('TV','TARJETA VIDEO','Dispositivo')

INSERT INTO CaracteristicasHardware VALUES('DD','DD01','TECNOLOGIA DISCO','PM','')INSERT INTO CaracteristicasHardware VALUES('DD','DD02','CAPACIDAD DISCO','','')INSERT INTO CaracteristicasHardware VALUES('MP','MP01','SOCKET','PM','')INSERT INTO CaracteristicasHardware VALUES('MP','MP02','VELOCIDAD','PM','MR')INSERT INTO CaracteristicasHardware VALUES('MP','MP03','NUCLEOS','','')INSERT INTO CaracteristicasHardware VALUES('MP','MP04','VELOCIDAD BUS','','')INSERT INTO CaracteristicasHardware VALUES('MP','MP05','TECNOLOGIAMICROPROCE','','')INSERT INTO CaracteristicasHardware VALUES('MR','MR01','TECNOLOGIA MEMORIA','PM','')INSERT INTO CaracteristicasHardware VALUES('MR','MR02','VELOCIDAD BUS','PM','MP')INSERT INTO CaracteristicasHardware VALUES('MR','MR03','CAPACIDAD MEMORIA','','')INSERT INTO CaracteristicasHardware VALUES('MR','MR04','USORECOMENDADO','','')INSERT INTO CaracteristicasHardware VALUES('PM','PM01','SOCKET','MP','')INSERT INTO CaracteristicasHardware VALUES('PM','PM02','TECNOLOGIA MEMORIA','MR','')INSERT INTO CaracteristicasHardware VALUES('PM','PM03','VELOCIDADBUS','MR','MP')INSERT INTO CaracteristicasHardware VALUES('PM','PM04','TECNOLOGIA DISCO','DD','')INSERT INTO CaracteristicasHardware VALUES('PM','PM05','TECNOLOGIA TARJETA','TV','')INSERT INTO CaracteristicasHardware VALUES('TV','TV01','TECNOLOGIA TARJETA','PM','')

44

Page 45: ProyectoLaboratorioV

INSERT INTO CaracteristicasHardware VALUES('TV','TV02','MEMORIA','','')

INSERT INTO Articulo VALUES('100','Placa Intel ','Hardware','100','Unidad','100','7')INSERT INTO Articulo VALUES('110','Placa Madre','Hardware','100','Unidad','130','8')INSERT INTO Articulo VALUES('200','Placa Asrock','Hardware','200','Unidad','90','4')INSERT INTO Articulo VALUES('210','Placa Asrock','Hardware','200','Unidad','120','8')INSERT INTO Articulo VALUES('300','Microprocesador ','Hardware','100','Unidad','100','9')INSERT INTO Articulo VALUES('310','Microprocesador','Hardware','100','Unidad','110','10')INSERT INTO Articulo VALUES('400','Microprocesador','Hardware','300','Unidad','90','4')INSERT INTO Articulo VALUES('500','Memoria','Hardware','300','Unidad','50','8')INSERT INTO Articulo VALUES('600','Memoria','Hardware','300','Unidad','40','5')INSERT INTO Articulo VALUES('700','Disco duro','Hardware','500','Unidad','50','9')INSERT INTO Articulo VALUES('800','Disco Duro','Hardware','600','Unidad','45','3')INSERT INTO Articulo VALUES('900','Tarjeta Video','Hardware','950','Unidad','40','8')

INSERT INTO ArticuloHardware VALUES('100','DP40','INTEL DP40 740 DDR2 800 MHZ SATA PCI','DP40','PM')INSERT INTO ArticuloHardware VALUES('110','DP43','INTEL DP43 747 DDR2 1033 MHZ SATA PCI','DP43','PM')INSERT INTO ArticuloHardware VALUES('200','K7','ASROCK K7 DDR2 533 MHZ SATA PCI','K7','PM')INSERT INTO ArticuloHardware VALUES('210','K9','ASROCK K9 DDR2 1033 MHZ SATA PCI','K9','PM')INSERT INTO ArticuloHardware VALUES('300','PIV','INTEL PIV 740 1.6 GHZ 1 NUCLEO 533 MHZ','PIV','MP')INSERT INTO ArticuloHardware VALUES('310','CORE 2 DUO','INTEL CORE 2 DUO 747 2.4 GHZ 2 NUCLEOS 1033 MHZ','CORE 2 DUO','MP')INSERT INTO ArticuloHardware VALUES('400','ATHLON K9','AMD ATHLON K9 2.8 GHZ X2 1033 MHZ','ATHLON K9','MP')INSERT INTO ArticuloHardware VALUES('500','DDR2','KINGSTON DDR2 1 GB 533 MHZ','DDR2','MR')INSERT INTO ArticuloHardware VALUES('600','DDR1','KINGSTON DDR1 512 MB 400 MHZ','DDR1','MR')INSERT INTO ArticuloHardware VALUES('700','SATA','SEAGATE SATA 250 GB','SATA','DD')INSERT INTO ArticuloHardware VALUES('800','IDE','SEAGATE IDE 60 GB','IDE','DD')INSERT INTO ArticuloHardware VALUES('900','PCI','TRINITRON PCI 256 MB MEMORIA','PCI','TV')

INSERT INTO ArticuloDetalle VALUES('100','PM','PM01','740','')INSERT INTO ArticuloDetalle VALUES('100','PM','PM02','DDR2','2')INSERT INTO ArticuloDetalle VALUES('100','PM','PM03','800 MHZ','')INSERT INTO ArticuloDetalle VALUES('100','PM','PM04','SATA','4')INSERT INTO ArticuloDetalle VALUES('100','PM','PM05','PCI','4')INSERT INTO ArticuloDetalle VALUES('110','PM','PM01','747','')INSERT INTO ArticuloDetalle VALUES('110','PM','PM02','DDR2','')INSERT INTO ArticuloDetalle VALUES('110','PM','PM03','1033 MHZ','')INSERT INTO ArticuloDetalle VALUES('110','PM','PM04','SATA','')INSERT INTO ArticuloDetalle VALUES('110','PM','PM05','PCI','')INSERT INTO ArticuloDetalle VALUES('200','PM','PM01','K7','')INSERT INTO ArticuloDetalle VALUES('200','PM','PM02','DDR2','2')INSERT INTO ArticuloDetalle VALUES('200','PM','PM03','533 MHZ','')INSERT INTO ArticuloDetalle VALUES('200','PM','PM04','SATA','2')INSERT INTO ArticuloDetalle VALUES('200','PM','PM05','PCI','2')INSERT INTO ArticuloDetalle VALUES('210','PM','PM01','K9','')INSERT INTO ArticuloDetalle VALUES('210','PM','PM02','DDR2','')INSERT INTO ArticuloDetalle VALUES('210','PM','PM03','1033 MHZ','')INSERT INTO ArticuloDetalle VALUES('210','PM','PM04','SATA','')INSERT INTO ArticuloDetalle VALUES('210','PM','PM05','PCI','')INSERT INTO ArticuloDetalle VALUES('300','MP','MP01','740','')INSERT INTO ArticuloDetalle VALUES('300','MP','MP02','1.6 GHZ','')

45

Page 46: ProyectoLaboratorioV

INSERT INTO ArticuloDetalle VALUES('300','MP','MP03','1 NUCLEO','')INSERT INTO ArticuloDetalle VALUES('300','MP','MP04','533 MHZ','')INSERT INTO ArticuloDetalle VALUES('310','MP','MP01','747','')INSERT INTO ArticuloDetalle VALUES('310','MP','MP02','2.4 GHZ','')INSERT INTO ArticuloDetalle VALUES('310','MP','MP03','2 NUCLEOS','')INSERT INTO ArticuloDetalle VALUES('310','MP','MP04','1033 MHZ','')INSERT INTO ArticuloDetalle VALUES('400','MP','MP01','K9','')INSERT INTO ArticuloDetalle VALUES('400','MP','MP02','2.8 GHZ','')INSERT INTO ArticuloDetalle VALUES('400','MP','MP03','X2','')INSERT INTO ArticuloDetalle VALUES('400','MP','MP04','800 MHZ','')INSERT INTO ArticuloDetalle VALUES('500','MR','MR01','DDR2 ','')INSERT INTO ArticuloDetalle VALUES('500','MR','MR02','1 GB','')INSERT INTO ArticuloDetalle VALUES('500','MR','MR03','533 MHZ','')INSERT INTO ArticuloDetalle VALUES('600','MR','MR01','DDR1 ','')INSERT INTO ArticuloDetalle VALUES('600','MR','MR02','512 MB','')INSERT INTO ArticuloDetalle VALUES('600','MR','MR03','400 MHZ','')INSERT INTO ArticuloDetalle VALUES('700','DD','DD01','SATA','')INSERT INTO ArticuloDetalle VALUES('700','DD','DD02','250 GB','')INSERT INTO ArticuloDetalle VALUES('800','DD','DD01','IDE','')INSERT INTO ArticuloDetalle VALUES('800','DD','DD02','60 GB','')INSERT INTO ArticuloDetalle VALUES('900','TV','TV01','PCI','')INSERT INTO ArticuloDetalle VALUES('900','TV','TV02','256 MB','')

INSERT INTO Cliente VALUES('001','Jalisto Camacho Robert Efrain','10402478485','Jalisto','Cmacho','Robert Efrain','40247848','Av. Dolores 123, Arequipa','984211172','')INSERT INTO Cliente VALUES('002','Los tres amigos','11225220122','Vega','Marquez','Lucia','46064527','Av. Cultura 523, Cusco','984481866','')INSERT INTO Cliente VALUES('003','Altiplano','12121554545','Delgado','Izquierdo','Alberto','40245112','Av. El Sol 223, Cusco','981455172','')INSERT INTO Cliente VALUES('004','Compu Server','12002452366','Cruz','Ramirez','Julio','40247141','Av. Pardo 221, Arequipa','984753715','')

INSERT INTO DocumentoEntrada VALUES('100','001-00100','23/03/2009 0:00:00','100')

INSERT INTO EntradaDetalle VALUES('100','001-00100','100','10','100')INSERT INTO EntradaDetalle VALUES('100','001-00100','110','10','130')INSERT INTO EntradaDetalle VALUES('100','001-00100','200','5','90')INSERT INTO EntradaDetalle VALUES('100','001-00100','210','10','120')INSERT INTO EntradaDetalle VALUES('100','001-00100','300','10','100')INSERT INTO EntradaDetalle VALUES('100','001-00100','310','10','110')INSERT INTO EntradaDetalle VALUES('100','001-00100','400','5','90')INSERT INTO EntradaDetalle VALUES('100','001-00100','500','10','50')INSERT INTO EntradaDetalle VALUES('100','001-00100','600','5','40')INSERT INTO EntradaDetalle VALUES('100','001-00100','700','10','50')INSERT INTO EntradaDetalle VALUES('100','001-00100','800','5','40')INSERT INTO EntradaDetalle VALUES('100','001-00100','900','10','40')

INSERT INTO DocumentoSalida VALUES('100','001-00001','24/03/2009 0:00:00','001','100')INSERT INTO DocumentoSalida VALUES('100','001-00002','25/03/2008 0:00:00','002','100')INSERT INTO DocumentoSalida VALUES('100','001-00003','26/03/2008 0:00:00','003','100')

INSERT INTO SalidaDetalle VALUES('100','001-00001','100','1','110')INSERT INTO SalidaDetalle VALUES('100','001-00001','700','1','55')

46

Page 47: ProyectoLaboratorioV

INSERT INTO SalidaDetalle VALUES('100','001-00001','800','1','44')INSERT INTO SalidaDetalle VALUES('100','001-00001','900','1','44')INSERT INTO SalidaDetalle VALUES('100','001-00002','100','1','110')INSERT INTO SalidaDetalle VALUES('100','001-00002','110','1','143')INSERT INTO SalidaDetalle VALUES('100','001-00002','210','1','132')INSERT INTO SalidaDetalle VALUES('100','001-00002','800','1','45')INSERT INTO SalidaDetalle VALUES('100','001-00002','900','1','44')INSERT INTO SalidaDetalle VALUES('100','001-00002','500','1','55')INSERT INTO SalidaDetalle VALUES('100','001-00003','100','1','110')INSERT INTO SalidaDetalle VALUES('100','001-00003','110','1','143')INSERT INTO SalidaDetalle VALUES('100','001-00003','200','1','99')INSERT INTO SalidaDetalle VALUES('100','001-00003','210','1','132')INSERT INTO SalidaDetalle VALUES('100','001-00003','300','1','110')INSERT INTO SalidaDetalle VALUES('100','001-00003','400','1','99')INSERT INTO SalidaDetalle VALUES('100','001-00003','500','1','55')

INSERT INTO TipoComputador VALUES('001','Ordenador Personal','Computador de escritorio')INSERT INTO TipoComputador VALUES('002','Laptop','Computador desktop portatil')

--***********************************************************************--Esta funcion nos devuelve una lista de todos los articulos con sus --repectivos numero de ventas--***********************************************************************CREATE FUNCTION fnArticulosVendidos(@CodArticuloIni varchar(8), @CodArticuloFin varchar(8))RETURNS TABLEAS RETURN (SELECT A.Cod_Articulo, A.Nombre_Articulo, A.Tipo_Articulo, A.Cod_Marca, "Cantidad Ventas" = sum(SD.Cantidad)

FROM SalidaDetalle SD inner join Articulo AON SD.Cod_Articulo = A.Cod_ArticuloWHERE ((@CodArticuloIni = '*') OR (A.Cod_Articulo >= @CodArticuloIni))

AND ((@CodArticuloFin = '*') OR (A.Cod_Articulo <= @CodArticuloFin))GROUP BY A.Cod_Articulo, A.Nombre_Articulo, A.Tipo_Articulo,

A.Cod_Marca)--select * from dbo.fnArticulosVendidos('300','500')

--***********************************************************************--Esta funcion nos devuelve la tabla con la cantidad de ventas realizadas por uno de los trabajadors--indicado en la variable Cod_Trabajador en un determinado mes y anio--***********************************************************************CREATE FUNCTION ArticulosVendidosFecha(@mes varchar(2), @anio varchar(4))RETURNS TABLEAS RETURN (SELECT SD.Cod_Articulo,"CantidadVentas" = count(Cod_Articulo)

FROM DocumentoSalida DS inner join SalidaDetalle SDON DS.Tipo_Doc = SD.Tipo_Doc and DS.Nro_Doc = SD.Nro_DocWHERE ((@mes = '*') OR Month(Fecha) = cast(@mes as int)) and

((@anio = '*') or Year(Fecha) = cast(@anio as int)) GROUP BY (SD.Cod_Articulo))

--select * from dbo.ArticulosVendidosFecha('*','2008')

47

Page 48: ProyectoLaboratorioV

CREATE FUNCTION fnListadoMarca(@MarcaIni varchar(10), @MarcaFin varchar(10))RETURNS TABLEAS RETURN ( SELECT *

FROM Articulo AWHERE (@MarcaIni = '*' or A.Cod_Marca >= @MarcaIni) and (@MarcaFin

= '*' or A.Cod_Marca <= @MarcaFin))--select * from dbo.fnProductosVendidosMarca('200','300')

--***********************************************************************--Esta funcion nos devuelve una lista de todos los articulos con su repectivo stock--***********************************************************************CREATE FUNCTION fnArticulosEnStock(@Cantidad int)RETURNS TABLEAS RETURN (SELECT *

FROM Articulo AWHERE A.Stock <= @Cantidad)

--select * from dbo.fnArticulosEnStock(10)

--********************************************************************--Esta funcion nos devuelve una lista de todos los tipos de articulos con sus repectivos numero de ventas--***********************************************************************CREATE FUNCTION fnProductosVendidosTipo(@Tipo varchar(10))RETURNS TABLEAS RETURN ( SELECT TH.Cod_TipoHardware, TH.Nombre_Hardware, TH.Descripcion, T1.CantidadVentas

FROM TipoHardware TH inner join (SELECT AH.Cod_TipoHardware, "CantidadVentas" = sum(SD.Cantidad)

FROM SalidaDetalle SD inner join ArticuloHardware AH

ON (SD.Cod_Articulo = AH.Cod_Articulo)

WHERE (@Tipo = '*' or AH.Cod_TipoHardware = @Tipo)

GROUP BY AH.Cod_TipoHardware) T1ON TH.Cod_TipoHardware = T1.Cod_TipoHardware)

--select * from dbo.fnProductosVendidosTipo('*')

--***********************************************************************--Esta funcion nos devuelve una lista de todos las marcas articulos con sus repectivos numero de ventas--***********************************************************************CREATE FUNCTION fnProductosVendidosMarca(@MarcaIni varchar(10), @MarcaFin varchar(10))RETURNS TABLEAS RETURN ( SELECT M.Cod_Marca, M.Marca, M.Tiempo_Garantia, M.Coef_Ganancia, T1.CantidadVentas

FROM Marca M inner join (SELECT A.Cod_Marca, "CantidadVentas" = sum(SD.Cantidad)

FROM SalidaDetalle SD inner join Articulo A

ON SD.Cod_Articulo = A.Cod_Articulo

WHERE (@MarcaIni = '*' or A.Cod_Marca >= @MarcaIni) and (@MarcaFin = '*' or A.Cod_Marca <= @MarcaFin)

GROUP BY A.Cod_Marca) T1

48

Page 49: ProyectoLaboratorioV

ON M.Cod_Marca = T1.Cod_Marca)--select * from dbo.fnProductosVendidosMarca('200','700')

--***********************************************************************--Esta funcion nos devuelve la tabla con la cantidad de ventas realizadas por uno de los trabajadors--indicado en la variable Cod_Trabajador en un determinado mes y anio--***********************************************************************CREATE FUNCTION fnCantidadVentasMesAnios(@Cod_Trabajador varchar(8), @mes varchar(2), @anio varchar(4))RETURNS TABLEAS RETURN (SELECT Cod_Trabajador,"CantidadVentas" = count(Cod_Trabajador)

FROM DocumentoSalidaWHERE ((Cod_Trabajador = @Cod_Trabajador) and ((@mes = '*') OR

Month(Fecha) = cast(@mes as int)) and( (@anio = '*') or Year(Fecha) = cast(@anio as int)))

GROUP BY (Cod_Trabajador))

--select * from dbo.fnCantidadVentasMesAnios1('100','*','*')

--************************************************--Recupera Clientes pasandole como parametro DNI --************************************************

CREATE FUNCTION fnClientesDNI(@DNI varchar(8))RETURNS TABLEAS RETURN (SELECT * FROM Cliente WHERE (DNI = @DNI))

--select * from dbo.fnClientesDNI('46064527')

--************************************************--Recupera Proveedores pasandole como parametro RUC--************************************************

CREATE FUNCTION fnProveedoresRUC(@RUC varchar(11))RETURNS TABLEAS RETURN (SELECT * FROM Proveedor WHERE (RUC = @RUC))--select * from dbo.fnProveedoresRUC('24154578485')

--************************************************--Recupera Clientes pasandole como SUS Codigos Inicio y fin,-- * si es para todos--************************************************

CREATE FUNCTION fnClientesCodigos(@Cod_ClienteIni varchar(6), @Cod_ClienteFin varchar(6))

RETURNS TABLEAS RETURN (SELECT * FROM Cliente WHERE ((@Cod_ClienteIni = '*') or (@Cod_ClienteIni <= Cod_Cliente)) and ((@Cod_ClienteFin = '*') or (@Cod_ClienteFin >= Cod_Cliente)))--Select * from dbo.fnClientesCodigos('002','004')/* ******************************************************************* Function que devuelve los registros que pertenecen a un tipo de

articulo Hardware Y muestra las caracteristicas generales del articulo

49

Page 50: ProyectoLaboratorioV

******************************************************************* */CREATE FUNCTION fnArticulosPorTipoHardware(@Cod_TipoHardwareIni varchar(6), @Cod_TipoHardwareFin varchar(6))RETURNS TABLEAS RETURN (SELECT * FROM dbo.ArticuloHardware WHERE ((@Cod_TipoHardwareIni = '*') OR (Cod_TipoHardware >= @Cod_TipoHardwareIni))AND

((@Cod_TipoHardwareFin = '*') OR (Cod_TipoHardware <= @Cod_TipoHardwareFin)))--select * from dbo.fnArticulosPorTipoHardware('*', '*')

/* ******************************************************************* Function que devuelve las características especificas de un

artículo de hardware y sus Configuraciones con otro hardware ******************************************************************* */CREATE FUNCTION fnCaracteristicasArticuloHardwareConfiguraciones(@Cod_ArticuloHardwareIni varchar(9),

@Cod_ArticuloHardwareFin varchar(9))RETURNS TABLEAS RETURN (SELECT HD.Cod_Articulo, HD.Cod_TipoHardware, HD.Cod_Caracteristicas,

CH.Caracteristica, HD.Especificacion,CH.Configuracion1, CH.Configuracion2

FROM dbo.ArticuloDetalle HD INNER JOIN CaracteristicasHardware CH ON (HD.Cod_TipoHardware = CH.Cod_TipoHardware) and

(HD.Cod_Caracteristicas = CH.Cod_Caracteristicas) WHERE ((@Cod_ArticuloHardwareIni = '*') OR (HD.Cod_Articulo >=

@Cod_ArticuloHardwareIni))AND((@Cod_ArticuloHardwareFin = '*') OR (HD.Cod_Articulo

<= @Cod_ArticuloHardwareFin)))--select * from dbo.fnCaracteristicasArticuloHardwareConfiguraciones('110','110')

CREATE FUNCTION fnExtraerEspecificacionTipoHardwareConfiguracion(@Cod_ArticuloHardwareIni varchar(9),

@Cod_ArticuloHardwareFin varchar(9),

@Cod_TipoHardware varchar(6))RETURNS TABLEAS RETURN (SELECT Cod_Articulo, Cod_TipoHardware, Caracteristica, Especificacion, Configuracion1, Configuracion2 FROM dbo.fnCaracteristicasArticuloHardwareConfiguraciones(@Cod_ArticuloHardwareIni,

@Cod_ArticuloHardwareFin)WHERE (@Cod_TipoHardware = '*') OR (Configuracion1 =

@Cod_TipoHardware OR Configuracion2 = @Cod_TipoHardware)AND((@Cod_ArticuloHardwareIni = '*') OR (Cod_Articulo >=

@Cod_ArticuloHardwareIni))AND((@Cod_ArticuloHardwareFin = '*') OR (Cod_Articulo <=

@Cod_ArticuloHardwareFin)))--select * from dbo.fnExtraerEspecificacionTipoHardwareConfiguracion('*', '*','PM')

50

Page 51: ProyectoLaboratorioV

/* ******************************************************************* Function que devuelve los articulos y sus características especificas

y sus Configuraciones con otro hardware de un tipo de hardware ******************************************************************* */CREATE FUNCTION fnListaCaracteristicasArticuloHardCofigXTipoHard(@Cod_TipoHardware varchar(6))RETURNS TABLEAS RETURN (SELECT HD.Cod_Articulo, HD.Cod_TipoHardware, HD.Cod_Caracteristicas,

CH.Caracteristica, HD.Especificacion,CH.Configuracion1, CH.Configuracion2

FROM dbo.ArticuloDetalle HD INNER JOIN CaracteristicasHardware CH ON (HD.Cod_TipoHardware = CH.Cod_TipoHardware) and

(HD.Cod_Caracteristicas = CH.Cod_Caracteristicas) WHERE (HD.Cod_TipoHardware = @Cod_TipoHardware) OR

(@Cod_TipoHardware = '*'))--select * from dbo.fnListaCaracteristicasArticuloHardCofigXTipoHard('PM')

/***********************************************************************Funcion que permite buscar articulos que cumplan una caracteristica espedifica por tipode hardware

***********************************************************************/CREATE FUNCTION fnBuscarCaracteristicaEspecificaConfiguracion(@Caracteristica varchar(20), @Especificacion varchar(10), @Cod_TipoHardware varchar(6))RETURNS TABLEAS RETURN (SELECT F.Cod_Articulo, A.Descripcion, F.Caracteristica, F.Especificacion FROM dbo.fnListaCaracteristicasArticuloHardCofigXTipoHard(@Cod_TipoHardware) F INNER JOIN dbo.ArticuloHardware A

ON F.Cod_Articulo = A.Cod_ArticuloWHERE F.Caracteristica = @Caracteristica AND F.Especificacion =

@Especificacion)

--select * from dbo.fnBuscarCaracteristicaEspecificaConfiguracion('TECNOLOGIA MEMORIA','DDR2','MR')

/* ******************************************************************* Function que devuelve los articulos que tienen una característica

especifica de un determinado Tipo de hardware ******************************************************************* */CREATE FUNCTION fnArticulos_CaracteristicaEspecifica_TipoHardware(

@Cod_TipoHardware varchar(6),

@Especificacion varchar(10))RETURNS TABLEAS RETURN (SELECT F.Cod_Articulo, F.Cod_TipoHardware, F.Cod_Caracteristicas,

F.Caracteristica, F.Especificacion, F.Configuracion1, F.Configuracion2 FROM dbo.fnListaCaracteristicasArticuloHardCofigXTipoHard(@Cod_TipoHardware) F

WHERE ((@Cod_TipoHardware = '*') OR (Cod_TipoHardware= @Cod_TipoHardware)) AND

((@Especificacion = '*') OR (Especificacion = @Especificacion)))--select * from dbo.fnArticulos_CaracteristicaEspecifica_TipoHardware('MP','747')

51

Page 52: ProyectoLaboratorioV

/* ******************************************************************* Procedimiento que devuelve las características especificas de un

Computador ******************************************************************* */create procedure spu_GenerarProforma @Cod_ArticuloHardware varchar(9)asbegin

-- Crear tabla temporal con las caracteristicas especificas del tipo de hardwareselect * into #CACfrom

dbo.fnCaracteristicasArticuloHardwareConfiguraciones(@Cod_ArticuloHardware,@Cod_ArticuloHardware)

-- Crear tabla de resultadoscreate table #Computador( Cod_Articulo varchar(9), Cod_TipoHardware varchar(6), Descripcion varchar(50));

-- Declarar variables para utilizar en el cursorDECLARE @Cod_Articulo varchar(9),

@Cod_ArticuloAux varchar(9), @Cod_TipoHardware varchar(6), @Cod_TipoHardwareAux varchar(6), @Especificacion varchar(10), @EspecificacionAux varchar(10), @Configuracion1 varchar(6)

-- Inicializar variables auxiliares (Contienen valores del ultimo registro))SET @Cod_ArticuloAux = ''SET @Cod_TipoHardwareAux = ''SET @EspecificacionAux = ''SET @Configuracion1 = ''

--Variables cursor anidadodeclare @Cod_ArticuloCom varchar(9),

@Cod_TipoHardwareCom varchar(6),@EspecificacionCom varchar(10)

-- Inicializar variables auxiliares cursor anidadoSET @Cod_ArticuloCom = ''SET @Cod_TipoHardwareCom = ''SET @EspecificacionCom = ''

-- Declarar el cursorDECLARE cu_CaracteristicaasPlaca CURSOR

FOR SELECT Cod_Articulo, Especificacion, Configuracion1 FROM #CAC

-- Abrir el cursor OPEN cu_CaracteristicaasPlaca

-- Recuperar el primer registro en las variablesFETCH NEXT FROM cu_CaracteristicaasPlaca INTO @Cod_Articulo, @Cod_TipoHardware, @Configuracion1

52

Page 53: ProyectoLaboratorioV

-- Procesar cada registroWHILE @@FETCH_STATUS = 0BEGIN

-- Declarar el cursor utilizando la funcion-- fnArticulos_CaracteristicaEspecifica_TipoHardware(,)DECLARE cu_CaracteristicasEspecificasTipoHardware CURSOR

FOR SELECT Cod_Articulo, Cod_TipoHardware, Especificacion FROM

dbo.fnArticulos_CaracteristicaEspecifica_TipoHardware(@Configuracion1,@Especificacion)

-- Abrir el cursor OPEN cu_CaracteristicasEspecificasTipoHardware

-- Recuperar el primer registro en las variablesFETCH NEXT FROM cu_CaracteristicasEspecificasTipoHardware

INTO @Cod_ArticuloCom, @Cod_TipoHardwareCom, @EspecificacionCom

-- Procesar cada registroWHILE @@FETCH_STATUS = 0BEGIN

-- Insertar datos INSERT INTO #Computadorvalues(@Cod_ArticuloCom, @Cod_TipoHardwareCom,

@EspecificacionCom)

-- Recuperar siguiente registroFETCH NEXT FROM cu_CaracteristicasEspecificasTipoHardware

INTO @Cod_ArticuloCom, @Cod_TipoHardwareCom, @EspecificacionCom

END

-- Cerrar el cursor CLOSE cu_CaracteristicasEspecificasTipoHardwareDEALLOCATE cu_CaracteristicasEspecificasTipoHardware -- Asignar datos de registro actual a variables auxiliares SET @Cod_ArticuloAux = @Cod_ArticuloSET @Cod_TipoHardwareAux = @Cod_TipoHardwareSET @EspecificacionAux = @Especificacion

-- Recuperar siguiente registroFETCH NEXT FROM cu_CaracteristicaasPlaca INTO @Cod_Articulo, @Especificacion, @Configuracion1

END

-- Cerrar el cursor CLOSE cu_CaracteristicaasPlaca DEALLOCATE cu_CaracteristicaasPlaca

-- Mostrar caracteristicas dela placaSELECT * FROM #CAC

-- Mostrar consulta con los datos generadosSELECT C.Cod_Articulo, A.Descripcion, C.Cod_TipoHardware

INTO #ProformaFROM #Computador C, ArticuloHardware AWHERE C.Cod_Articulo = A.Cod_Articulo

SELECT C.Cod_Articulo, T.Nombre_Hardware, C.Descripcion, C.Cod_TipoHardware FROM #Proforma C, TipoHardware T

53

Page 54: ProyectoLaboratorioV

WHERE C.Cod_TipoHardware = T.Cod_TipoHardware

END;

--exec spu_ComputadorComputadorDetalle 100

CREATE TRIGGER tr_EntradaStockon EntradaDetallefor INSERT, UPDATE, DELETE

ASBEGIN

-- Recuperar Cod_Articulo UPDATEdeclare @Cod_Articulo dbo.TCod_Articulodeclare @Cantidad int

-- Si es DELETEDif EXISTS(SELECT * FROM DELETED)BEGIN

-- Recuperar datos antes del UPDATEselect @Cod_Articulo = Cod_Articulo FROM DELETED;select @Cantidad = CantidadFROM DELETED;

-- RevertirUPDATE ArticuloSET Stock = Stock - @CantidadWHERE Cod_Articulo = @Cod_Articulo

END;

-- Si es INSERTEDif EXISTS(SELECT * FROM INSERTED)BEGIN

-- Recuperar datos antes del UPDATEselect @Cod_Articulo = Cod_Articulo FROM INSERTED;select @Cantidad = CantidadFROM INSERTED;

-- RevertirUPDATE ArticuloSET Stock = Stock + @CantidadWHERE Cod_Articulo = @Cod_Articulo

END;

END;

CREATE TRIGGER tr_SalidaStockon SalidaDetallefor INSERT, UPDATE, DELETE

ASBEGIN

-- Recuperar Cod_Articulo UPDATEdeclare @Cod_Articulo dbo.TCod_Articulodeclare @Cantidad int

54

Page 55: ProyectoLaboratorioV

-- Si es DELETEDif EXISTS(SELECT * FROM DELETED)BEGIN

-- Recuperar datos antes del UPDATEselect @Cod_Articulo = Cod_Articulo FROM DELETED;select @Cantidad = CantidadFROM DELETED;

-- RevertirUPDATE ArticuloSET Stock = Stock + @CantidadWHERE Cod_Articulo = @Cod_Articulo

END;

-- Si es INSERTEDif EXISTS(SELECT * FROM INSERTED)BEGIN

-- Recuperar datos antes del UPDATEselect @Cod_Articulo = Cod_Articulo FROM INSERTED;select @Cantidad = CantidadFROM INSERTED;

-- RevertirUPDATE ArticuloSET Stock = Stock - @CantidadWHERE Cod_Articulo = @Cod_Articulo

END;

END;

CREATE TRIGGER tr_ArticuloDetalle_Descripcion1on ArticuloDetallefor UPDATE

ASBEGIN

-- Recuperar atributos antes del updatedeclare @Cod_Articulo dbo.TCod_Articuloselect @Cod_Articulo = Cod_Articulo

FROM DELETE;

declare @Especificacion varchar(10)select @Especificacion = Especificacion

FROM DELETE;

-- Actualizar DescripcionUPDATE ArticuloHardware

set Descripcion = Rtrim(Descripcion)+' '+@EspecificacionWHERE Cod_Articulo = @Cod_Articulo

END;

55

Page 56: ProyectoLaboratorioV

2. IMPLEMENTACIÓN DE LA CAPA LÓGICA EN C#

CLASE CENTIDAD (CLASE PRINCIPAL)

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;

namespace AppSistema.CapaLogica{ public class CEntidad { /* ATRIBUTOS */ private string aNombreTabla; private string[] aAtributoClave; private DataSet aDatos; private SqlConnection aConexionBD; // ----- Solo para uso interno private SqlDataAdapter aAdaptador; // ----- Solo para uso interno

/* CONSTRUCTORES */ public CEntidad() { aNombreTabla = ""; aAtributoClave = new string[0]; } public CEntidad(string pNombreTabla, params object[] pAtributosClave) { aNombreTabla = pNombreTabla; aAtributoClave = new string[pAtributosClave.Length]; for (int i = 0; i < aAtributoClave.Length; i++) { aAtributoClave[i] = pAtributosClave[i].ToString(); } aDatos = new DataSet(); /* Crear adaptador de datos */ aAdaptador = new SqlDataAdapter(); /* Crear Conexion al servidor de Base de datos */ aConexionBD = new SqlConnection();

aConexionBD.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + System.IO.Directory.GetCurrentDirectory() + "\\BDCrazyCorp.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; aConexionBD.FireInfoMessageEventOnUserErrors = false;

aConexionBD.Open(); }

/* PROPIEDADES */ public string NombreTabla {

56

Page 57: ProyectoLaboratorioV

get { return aNombreTabla; } set { aNombreTabla = value; } }

public string[] AtributoClave { get { return aAtributoClave; } set { aAtributoClave = value; } }

public DataSet Datos { get { return aDatos; } set { aDatos = value; } } /* OTROS METODOS */

/* ************************************************* */ /* Este método se utiliza para las sentencias INSERT, UPDATE y DELETE */ public void EjecutarSentenciaSQL(string TextoSQL) { // ----- Crear objeto de comandos SQL para definir sentencia SQL SqlCommand OComandoSQL; OComandoSQL = new SqlCommand(TextoSQL, aConexionBD);

// ----- Ejecutar Comando OComandoSQL.ExecuteNonQuery(); }

/* ************************************************* */ /* Este método se utiliza para la sentencia Select. Los datos lo devuelve en la propiedad Datos */ public void RecuperarDatos(string TextoSQL) { // ----- Asignar al adaptador sentencia SQL aAdaptador.SelectCommand = new SqlCommand(TextoSQL, aConexionBD); // ----- Asignar al adaptador sentencia SQL aDatos = new DataSet(); aAdaptador.Fill(aDatos); // Los datos se llenan en el DataSet aDatos }

57

Page 58: ProyectoLaboratorioV

/* ************************************************* */ public void RecuperarFila(params object[] Clave) { /* Construir sentencia Select */ string TextoSQL = "Select * " + " from " + aNombreTabla + " where"; for (int i = 0; i < Clave.Length; i++) { TextoSQL = TextoSQL + " (" + aAtributoClave[i] + "='" + Clave[i] + "') and "; } TextoSQL = TextoSQL.Substring(0, TextoSQL.Length - 5); /* Ejecutar sentencia Select */ RecuperarDatos(TextoSQL); }

/* ************************************************* */ public virtual bool ExisteClave(params object[] Atributos) { /* La clave es el primer atributo */ string[] Clave = new string[Atributos.Length]; for (int i = 0; i < Clave.Length; i++) { Clave[i] = Atributos[i].ToString(); } /* Construir sentencia Select */ string TextoSQL = "Select * " + " from " + aNombreTabla + " where"; for (int i = 0; i < Clave.Length; i++)

{ TextoSQL = TextoSQL + " (" + aAtributoClave[i] + "='" + Clave[i] + "') and ";

} TextoSQL = TextoSQL.Substring(0,TextoSQL.Length - 5); /* Ejecutar sentencia Select */ RecuperarDatos(TextoSQL);

/* Determinar si se recupero algun registro */ return (aDatos.Tables[0].Rows.Count > 0); }

/* ************************************************* */ public virtual string ArgumentoSentenciaInsert(params object[] Atributos) { return ""; }

/* ************************************************* */ public virtual void Insert(params object[] Atributos) { /* Generar sentencia INSERT */ string TextoSQL = "INSERT INTO " + aNombreTabla + " VALUES(" + ArgumentoSentenciaInsert(Atributos) + ")"; /* Ejecutar sentencia INSERT */ EjecutarSentenciaSQL(TextoSQL); }

/* ************************************************* */

58

Page 59: ProyectoLaboratorioV

public virtual string ArgumentoSentenciaUpDate(params object[] Atributos) { return ""; }

/* ************************************************* */ public virtual void UpDate(params object[] Atributos) { /* Generar sentencia UpDate */ string TextoSQL = "UPDATE " + aNombreTabla + " SET " + ArgumentoSentenciaUpDate(Atributos) + " WHERE "; for (int i = 0; i < aAtributoClave.Length; i++) { TextoSQL = TextoSQL + aAtributoClave[i] + " = '" + Atributos[i].ToString() + "' and "; } TextoSQL = TextoSQL.Substring(0, TextoSQL.Length - 5); /* Ejecutar sentencia UPDATE */ EjecutarSentenciaSQL(TextoSQL); }

/* ************************************************* */ public virtual string ArgumentoSentenciaDelete(params object[] Atributos) { return ""; }

/* ************************************************* */ public virtual void Delete(params object[] Atributos) { /* Generar sentencia Delete */ string TextoSQL = "DELETE FROM " + aNombreTabla + " WHERE "; for (int i = 0; i < aAtributoClave.Length; i++) { TextoSQL = TextoSQL + aAtributoClave[i] + " = '" + Atributos[i].ToString() + "' and "; } TextoSQL = TextoSQL.Substring(0, TextoSQL.Length - 5); /* Ejecutar sentencia DELETE */ EjecutarSentenciaSQL(TextoSQL); }

/* ************************************************* */ public virtual object ValorAtributo(string NombreAtributo) { /* Recupera un atributo del DataSet aDatos. * Pre condicion: aDatos debe tener el resultado de haber ejecutado * el metodo RecuperarDatos, es decir, una sentencia Select */ return aDatos.Tables[0].Rows[0][NombreAtributo]; }

/* ************************************************* */ public virtual void RecuperarTodos() { /* Generar sentencia SELECT */

59

Page 60: ProyectoLaboratorioV

string TextoSQL = "SELECT * FROM "+aNombreTabla; /* Ejecutar sentencia Select */ RecuperarDatos(TextoSQL); }

public virtual int Cantidad() { /* Generar sentencia SELECT */ string TextoSQL = "SELECT * FROM " + aNombreTabla; /* Ejecutar sentencia Select */ RecuperarDatos(TextoSQL); return aDatos.Tables[0].Rows.Count; }

public virtual int RecuperarIndice(string Clave) { RecuperarTodos(); for (int i = 0; i < aDatos.Tables[0].Rows.Count; i++) { if (aDatos.Tables[0].Rows[i][0].ToString() == Clave) return i + 1; } return -1; } }}

CLASE ARTICULO.CS

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CArticulo : CEntidad { /* CONSTRUCTORES */

public CArticulo() : base("Articulo","Cod_Articulo") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Articulo

"'" + Atributos[1] + "'," + // ----- Nombre_Articulo

"'" + Atributos[2] + "'," + // ----- Tipo_Articulo

"'" + Atributos[3] + "'," + // ----- Cod_Marca "'" + Atributos[4] + "'," + // ----- UnidadMed "" + Atributos[5] + "," + // ----- Precio "" + Atributos[6] + ""; // ----- Stock

}

60

Page 61: ProyectoLaboratorioV

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Articulo = '" + Atributos[0]+ "'," + // ----- Cod_Articulo

"Nombre_Articulo = '" + Atributos[1] + "'," +// ----- Nombre_Articulo

"Tipo_Articulo = '" + Atributos[2] + "'," + // ----- Tipo_Articulo

"Cod_Marca = '" + Atributos[3] + "'," + // ----- Cod_Marca "UnidadMed = '" + Atributos[4] + "'," + // ----- UnidadMed "Precio = " + Atributos[5] + "," + // ----- Precio "Stock = " + Atributos[6] + ""; // ----- Stock

} }}

CLASE CARTICULO HARDWARE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CArticuloDetalle : CEntidad { /* CONSTRUCTORES */

public CArticuloDetalle() : base("ArticuloDetalle","Cod_Articulo","Cod_TipoHardware","Cod_Caracteristicas")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Articulo "'" + Atributos[1] + "'," + // ----- Cod_TipoHardware

"'" + Atributos[2] + "'," + // ----- Cod_Caracteristicas

"'" + Atributos[3] + "'," + // ----- Especificacion "'" + Atributos[4] + "'," + // ----- Unid_Med_Tec "'" + Atributos[5] + "'"; // ----- Cantidad

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos)

61

Page 62: ProyectoLaboratorioV

{return "Cod_Articulo = '" + Atributos[0]+ "'," +

// ----- Cod_Articulo "Cod_TipoHardware = '" + Atributos[1] + "'," + // ----- Cod_TipoHarware

"Cod_Caracteristicas = '" + Atributos[2] + "'," +// ----- Cod_Caracteristicas "Especificacion = '" + Atributos[3] + "'," + // ----- Especificacion "Unid_Med_Tec = '" + Atributos[4] + "'," + // ----- Unid_Med_Tec

"Cantidad = '" + Atributos[5] + "'"; // ----- Cantidad

} }}

CLASE CARTICULO SOFTWARE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CArticuloHardware : CEntidad { /* CONSTRUCTORES */

public CArticuloHardware() : base("ArticuloHardware","Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Articulo

"'" + Atributos[1] + "'," + // ----- Descripcion

"'" + Atributos[2] + "'," + // ----- Tecnologia

"'" + Atributos[3] + "'," + // ----- Modelo "'" + Atributos[4] + "'"; // ----- Cod_TipoHardware

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Articulo = '" + Atributos[0]+ "'," + // ----- Cod_Articulo

"Descripcion = '" + Atributos[1] + "'," + // ----- Descripcion

"Tecnologia = '" + Atributos[2] + "'," + // ----- Tecnologia

62

Page 63: ProyectoLaboratorioV

"Modelo = '" + Atributos[3] + "'," + // ----- Modelo

"Cod_TipoHardware = '" + Atributos[4] + "'"; // ----- Cod_TipoHardware

} }}

CLASE CARTICULO SUMINISTRO

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CArticuloSoftware : CEntidad { /* CONSTRUCTORES */ public CArticuloSoftware() : base("ArticuloSoftware", "Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Articulo

"'" + Atributos[1] + "'," + // ----- Version "'" + Atributos[2] + "'," + // -----

Tipo_Software "'" + Atributos[3] + "'"; // ----- Descripcion

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Articulo = '" + Atributos[0]+ "'," + // ----- Cod_Articulo

"Version = '" + Atributos[1] + "'," + // ----- Version

"Tipo_Software = '" + Atributos[2] + "'," + // ----- Tipo_Software

"Descripcion = '" + Atributos[3] + "'"; // ----- Descripcion

} }}

CLASE CCARACTERISTICAS HARDWARE

63

Page 64: ProyectoLaboratorioV

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ class CArticuloSuministro : CEntidad { public CArticuloSuministro() : base("ArticuloSuministro","Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Articulo

"'" + Atributos[1] + "'," + // ----- Descripcion

"'" + Atributos[2] + "'," + // ----- Uso "'" + Atributos[3] + "'," + // -----

Interfaz "'" + Atributos[4] + "'"; // ----- Hardware_Asoc

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Articulo = '" + Atributos[0]+ "'," + // ----- Cod_Articulo

"Descripcion = '" + Atributos[1] + "'," + // ----- Descripcion

"Uso = '" + Atributos[2] + "'," + // ----- Uso

"Interfaz = '" + Atributos[3] + "'," + // ----- Interfaz

"Hardware_Asoc = '" + Atributos[4] + "'"; // ----- Hardware_Asoc

} }}

CLASE CCLIENTE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CCaracteristicasHardware : CEntidad { /* CONSTRUCTORES */

public CCaracteristicasHardware() : base("CaracteristicasHardware","Cod_TipoHardware","Cod_Caracteristicas")

64

Page 65: ProyectoLaboratorioV

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_TipoHardware

"'" + Atributos[1] + "'," + // ----- Cod_Caracteristicas

"'" + Atributos[2] + "'," + // ----- Caracteristica

"'" + Atributos[3] + "'," + // ----- Configuracion1 "'" + Atributos[4] + "'"; // ----- Configuracion2

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_TipoHardware = '" + Atributos[0]+ "'," + // ----- Cod_TipoHardware

"Cod_Caracteristicas = '" + Atributos[1] + "'," +// ----- Cod_Caracteristicas

"Caracteristica = '" + Atributos[2] + "'," + // ----- Caracteristica

"Configuracion1 = '" + Atributos[3] + "'," + // ----- Configuracion1

"Configuracion2 = '" + Atributos[4] + "'"; // ----- Configuracion2

} }}

CLASE CCOMPUTADOR

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CCliente : CEntidad { /* CONSTRUCTORES */

public CCliente() : base("Cliente","Cod_Cliente") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Cliente

65

Page 66: ProyectoLaboratorioV

"'" + Atributos[1] + "'," + // ----- RazonSocial

"'" + Atributos[2] + "'," + // ----- RUC "'" + Atributos[3] + "'," + // -----

ApellidoP "'" + Atributos[4] + "'," + // ----- ApellidoM "'" + Atributos[5] + "'," + // ----- Nombres "'" + Atributos[6] + "'," + // ----- DNI "'" + Atributos[7] + "'," + // ----- Direccion "'" + Atributos[8] + "'"; // ----- Telefono

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Cliente = '" + Atributos[0]+ "'," + // ----- Cod_Cliente

"RazonSocial = '" + Atributos[1] + "'," +// ----- RazonSocial

"RUC = '" + Atributos[2] + "'," + // ----- RUC

"ApellidoP = '" + Atributos[3] + "'," + // ----- ApellidoP "ApellidoM = '" + Atributos[4] + "'," + // ----- ApellidoM "Nombres = '" + Atributos[5] + "'," + // ----- Nombres "DNI = '" + Atributos[6] + "'," + // ----- DNI "Direccion = '" + Atributos[7] + "'," + // ----- Direccion

"Telefono = '" + Atributos[8] + "'"; // ----- Telefono

}

public void RecuperarRegistroNro(int pNro) { string TextoSQL = "SELECT * from dbo.fnClienteNro("+pNro.ToString()+")"; EjecutarSentenciaSQL(TextoSQL); }

public void RecuperarRegistroDNI(string PDNI) { string TextoSQL = "SELECT * from dbo.fnClientesDNI('" + PDNI + "')"; RecuperarDatos(TextoSQL); } }}

CLASE CCOMPUTADOR

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{

66

Page 67: ProyectoLaboratorioV

public class CComputador : CEntidad { /* CONSTRUCTORES */

public CComputador() : base("Computador","Cod_Computador") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Computador

"'" + Atributos[1] + "'," + // ----- Cod_TipoComputador

"'" + Atributos[2] + "'"; // ----- Descripcion

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Computador = '" + Atributos[0]+ "'," + // ----- Cod_Computador

"Cod_TipoComputador = '" + Atributos[1] + "'," + // ----- Cod_TipoComputador

"Descripcion = '" + Atributos[2] + "'"; // ----- Descripcion

} }}

CLASE CCOMPUTADORDETALLE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CComputadorDetalle : CEntidad { /* CONSTRUCTORES */ public CComputadorDetalle() : base("ComputadorDetalle", "Cod_Computador","Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Computador

"'" + Atributos[1] + "'," + // ----- Cod_Articulo

67

Page 68: ProyectoLaboratorioV

"'" + Atributos[2] + "'"; // ----- Especificacion}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Computador = '" + Atributos[0]+ "'," + // ----- Cod_Computador

"Cod_Articulo = '" + Atributos[1] + "'," + // ----- Cod_Articulo

"Especificacion = '" + Atributos[2] + "'"; // ----- Especificacion

} }}

CLASE CDOCUMENTOENTRADA

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CDocumentoEntrada : CEntidad { /* CONSTRUCTORES */

public CDocumentoEntrada() : base("DocumentoEntrada","Cod_Proveedor","Nro_Doc")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Proveedor

"'" + Atributos[1] + "'," + // ----- Nro_Doc "'" + Atributos[2] + "'," + // ----- Fecha "'" + Atributos[3] + "'"; // -----

Cod_Trabajador}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Proveedor = '" + Atributos[0]+ "'," + // ----- Cod_Proveedor

"Nro_Doc = '" + Atributos[1] + "'," + // ----- Nro_Doc

"Fecha = '" + Atributos[2] + "'," + // ----- Fecha

"Cod_Trabajador = '" + Atributos[3] + "'"; // ----- Cod_Trabajador

} }

68

Page 69: ProyectoLaboratorioV

}

CLASE CDOCUMENTOSALIDA

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CDocumentoSalida : CEntidad { /* CONSTRUCTORES */

public CDocumentoSalida() : base("DocumentoSalida","Tipo_Doc","Nro_Doc")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Tipo_Doc "'" + Atributos[1] + "'," + // ----- Nro_Doc "'" + Atributos[2] + "'," + // ----- Fecha

"'" + Atributos[3] + "'," + // ----- Cod_Cliente "'" + Atributos[4] + "'"; // ----- Cod_Trabajador

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Tipo_Doc = '" + Atributos[0]+ "'," + // ----- Tipo_Doc

"Nro_Doc = '" + Atributos[1] + "'," + // ----- Nro_Doc

"Fecha = '" + Atributos[2] + "'," + // ----- Fecha "Cod_Cliente = '" + Atributos[3] + "'," + // ----- Cod_Cliente

"Cod_Trabajador = '" + Atributos[4] + "'";// ----- Cod_Trabajador

} }}

CLASE CENTRADADETALLE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CEntradaDetalle : CEntidad

69

Page 70: ProyectoLaboratorioV

{ /* CONSTRUCTORES */

public CEntradaDetalle() : base("EntradaDetalle","Cod_Proveedor","Nro_Doc","Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Proveedor

"'" + Atributos[1] + "'," + // ----- Nro_Doc "'" + Atributos[2] + "'," + // -----

Cod_Articulo "'" + Atributos[3] + "'," + // -----

Cantidad "'" + Atributos[4] + "'"; // ----- Precio_Unit

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Proveedor = '" + Atributos[0]+ "'," + // ----- Cod_Proveedor

"Nro_Doc = '" + Atributos[1] + "'," + // ----- Nro_Doc

"Cod_Articulo = '" + Atributos[2] + "'," + // ----- Cod_Articulo

"Cantidad = '" + Atributos[3] + "'," + // ----- Cantidad

"Precio_unit = '" + Atributos[4] + "'"; // ----- Precio_Unit

} }}

CLASE CMARCA

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CMarca : CEntidad { /* CONSTRUCTORES */

public CMarca() : base("Marca","Cod_Marca") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

70

Page 71: ProyectoLaboratorioV

return "'" + Atributos[0] + "'," + // ----- Cod_Marca "'" + Atributos[1] + "'," + // ----- Marca "'" + Atributos[2] + "'," + // -----

Tiempo_Garantia "'" + Atributos[3] + "'"; // -----

Coef_Ganancia}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Marca = '" + Atributos[0]+ "'," + // ----- Cod_Marca

"Marca = '" + Atributos[1] + "'," + // ----- Marca

"Tiempo_Garantia = '" + Atributos[2] + "'," +// ----- Tiempo_Ganancia

"Coef_Ganancia = '" + Atributos[3] + "'"; // ----- Coef_Ganancia

} }}

CLASE CPROVEEDOR

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CProveedor : CEntidad { /* CONSTRUCTORES */ public CProveedor() : base("Proveedor","Cod_Proveedor")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Proveedor

"'" + Atributos[1] + "'," + // ----- RazonSocial

"'" + Atributos[2] + "'," + // ----- RUC "'" + Atributos[3] + "'," + // -----

Direccion "'" + Atributos[4] + "'"; // ----- Telefono

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Proveedor = '" + Atributos[0]+ "'," + // ----- Cod_Vendedor

71

Page 72: ProyectoLaboratorioV

"RazonSocial = '" + Atributos[1] + "'," + // ----- RazonSocial

"RUC = '" + Atributos[2] + "'," + // ----- RUC

"Direccion = '" + Atributos[3] + "'," + // ----- Direccion "Telefono = '" + Atributos[4] + "'"; // ----- Telefono

} }}

CLASE CSALIDADETALLE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CSalidaDetalle : CEntidad { /* CONSTRUCTORES */

public CSalidaDetalle() : base("SalidaDetalle","Tipo_Doc","Nro_Doc","Cod_Articulo")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Tipo_Doc "'" + Atributos[1] + "'," + // ----- Nro_Doc "'" + Atributos[2] + "'," + // -----

Cod_Articulo "'" + Atributos[3] + "'," + // -----

Cantidad "'" + Atributos[4] + "'"; // ----- Prec_Unit_Venta

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Tipo_Doc = '" + Atributos[0]+ "'," + // ----- Tipo_Doc

"Nro_Doc = '" + Atributos[1] + "'," + // ----- Nro_Doc

"Cod_Articulo = '" + Atributos[2] + "'," + // ----- Cod_Articulo

"Cantidad = '" + Atributos[3] + "'," + // ----- Cantidad

"Prec_Unit_Venta = '" + Atributos[4] + "'"; // ----- Prec_Unit_Venta

} }}

72

Page 73: ProyectoLaboratorioV

CLASE CSERVICIO

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CServicio : CEntidad { /* CONSTRUCTORES */

public CServicio() : base("Servicio","Cod_Servicio") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Servicio

"'" + Atributos[1] + "'," + // ----- Descripcion

"'" + Atributos[2] + "'," + // ----- Precio "'" + Atributos[3] + "'," + // ----- Garantia "'" + Atributos[4] + "'"; // ----- Cod_Trabajador

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Servicio = '" + Atributos[0]+ "'," + // ----- Cod_Servicio

"Descripcion = '" + Atributos[1] + "'," + // ----- Descripcion

"Precio = '" + Atributos[2] + "'," + // ----- Precio "Garantia = '" + Atributos[3] + "'," + // ----- Garantia

"Cod_Trabajador = '" + Atributos[4] + "'"; // ----- Cod_Trabajador

} }}

CLASE CTIPOCOMPUTADOR

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{

73

Page 74: ProyectoLaboratorioV

public class CTipoComputador : CEntidad { /* CONSTRUCTORES */ public CTipoComputador() : base("TipoComputador","Cod_TipoComputador")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_TipoComputador

"'" + Atributos[1] + "'," + // ----- Tipo_Computador "'" + Atributos[2] + "'"; // ----- Descripcion

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_TipoComputador = '" + Atributos[0]+ "'," + // ----- Cod_TipoComputador

"Tipo_Computador = '" + Atributos[1] + "'," + // ----- Tipo_Computador

"Descripcion = '" + Atributos[2] + "'"; // ----- Descripcion

} }}

CLASE CTIPOHARDWARE

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CTipoHardware : CEntidad { /* CONSTRUCTORES */

public CTipoHardware() : base("TipoHardware","Cod_TipoHardware")

{ }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_TipoHardware

"'" + Atributos[1] + "'," + // ----- Nombre_Hardware "'" + Atributos[2] + "'"; // ----- Descripcion

74

Page 75: ProyectoLaboratorioV

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_TipoHardware = '" + Atributos[0]+ "'," + // ----- Cod_TipoHardware

"Nombre_Hardware = '" + Atributos[1] + "'," + // ----- Nombre_Hardware

"Descripcion = '" + Atributos[2] + "'"; // ----- Descripcion

}

public void RecuperarRegistroNro(int pNro) { }

public void RecuperarCuadrosEstadisticos() { string TextoSQL = ""; TextoSQL = TextoSQL + " SELECT * from dbo.fnProductosVendidosTipo('*')"; RecuperarDatos(TextoSQL); } }}

CLASE CTRABAJADOR

using System;using System.Collections.Generic;using System.Text;

namespace AppSistema.CapaLogica{ public class CTrabajador : CEntidad { /* CONSTRUCTORES */

public CTrabajador() : base("Trabajador","Cod_Trabajador") { }

/* OTROS METODOS *//* ************************************************* */public override string ArgumentoSentenciaInsert(params

object[] Atributos){

return "'" + Atributos[0] + "'," + // ----- Cod_Trabajador "'" + Atributos[1] + "'," + // ----- ApellidoP "'" + Atributos[2] + "'," + // ----- ApellidoM "'" + Atributos[3] + "'," + // ----- Nombres "'" + Atributos[4] + "'," + // ----- DNI "'" + Atributos[5] + "'," + // ----- NivelAcceso "'" + Atributos[6] + "'," + // ----- Contraseña "'" + Atributos[7] + "'," + // ----- Profesion "'" + Atributos[8] + "'," + // ----- Cargo "'" + "" + "'"; //Email

75

Page 76: ProyectoLaboratorioV

}

/* ************************************************* */public override string ArgumentoSentenciaUpDate(params

object[] Atributos){

return "Cod_Trabajador = '" + Atributos[0] + "'," + // ----- Cod_Trabajadopr "ApellidoP = '" + Atributos[1] + "'," + // ----- ApellidoP "ApellidoM = '" + Atributos[2] + "'," + // ----- ApellidoM "Nombres = '" + Atributos[3] + "'," + // ----- Nombres "DNI = '" + Atributos[4] + "'," + // ----- DNI "NivelAcceso = '" + Atributos[5] + "'," + // ----- NivelAcesso "Contraseña = '" + Atributos[6] + "'," + // ----- Contraseña "Profesion = '" + Atributos[7] + "'," + // ----- Profesion "Cargo = '" + Atributos[8] + "'"; // ----- Cargo

} public string[] CantidadVentasTrabajadores(string pAnio) { string TextoSQL = "SELECT * from Trabajador"; EjecutarSentenciaSQL(TextoSQL); string[] Codigos = new string[Datos.Tables[0].Rows.Count]; string[] Resultados = new string[Datos.Tables[0].Rows.Count * 12]; for (int i = 0; i < Datos.Tables[0].Rows.Count; i++) { Codigos[i] = Datos.Tables[0].Rows[i][0].ToString(); }

TextoSQL = ""; for (int i = 0; i < Codigos.Length; i++) { TextoSQL = TextoSQL + " SELECT * from dbo.fnCantidadVentasMesAnios(" + Codigos[i] + "','" + i.ToString() + "','" + pAnio + "') UNION"; } TextoSQL = TextoSQL.Substring(0, TextoSQL.Length - 6); EjecutarSentenciaSQL(TextoSQL); return Resultados; }

public void CantidadVentasTrabajadores2(string Codigo, int j, string pAnio) { string TextoSQL = ""; TextoSQL = TextoSQL + " SELECT * from dbo.fnCantidadVentasMesAnios('"+Codigo+"','" + j.ToString() + "','" + pAnio + "')"; RecuperarDatos(TextoSQL); } }}

76

Page 77: ProyectoLaboratorioV

3. IMPLEMENTACIÓN DE LA CAPA INTERFAZ EN C#

Formulario autenticacion

MENU DEL SISTEMA

77

Page 78: ProyectoLaboratorioV

FORMULARIO REALIZAR PROFORMA

FORMULARIO GENERAR BOLETA DE VENTA

78

Page 79: ProyectoLaboratorioV

FORMULARIO GENERAR FACTURA

FORMULARIO MANTENIMIENTO ARTICULO

79

Page 80: ProyectoLaboratorioV

FORMULARIO MANTENIMIENTO MARCAS

FORMULARIO MANTENIMIENTO PROVEEDOR

80

Page 81: ProyectoLaboratorioV

FORMULARIO REGISTRAR ENTRADA

FORMULARIO MANTENIMIENTO TIPOHARDWARE

81

Page 82: ProyectoLaboratorioV

FORMULARIO MANTENIMIENTO TRABAJADOR

82