Vous êtes sur la page 1sur 83

UNIVERSIDAD SAN ANTONIO ABAD DEL

CUSCO
FACULTAD DE CIENCIAS QUIMICAS, FISICAS Y
MATEMATICAS

CARRERA PROFESIONAL DE INGENIERIA


INFORMATICA Y DE SISTEMAS

LABORATOTIO V

SISTEMA DE GESTION DE PROFORMAS Y


CONTROL DE VENTAS DE LA EMPRESA CRAZY
CORP

ALUMNOS:

Victor Gabriel Jalisto Camacho

Wilfredo Márquez Boza

DOCENTE:

Arturo Cuba

1
CUSCO - 2009

Tabla de contenido
Tabla de contenido.........................................................................................2

Identificación del problema............................................................................4

REQUERIMIENTOS DEL SISTEMA.- ..................................................................4

Modelo Conceptual.......................................................................................20

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

Flujo de Diseño.............................................................................................25

I.Flujo de implementación............................................................................29

implementación DE LA CAPA FISICA.............................................................29

Descripción de Servicios...............................................................................36

implementación de la capa lógica en c#.....................................................57

implementación de la capa interfaz en c#...................................................78

2
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
MODELO DEL NEGOCIO.-

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.

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.

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

4
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

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.

5
• 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.

2.4.- Casos de Uso de Alto Nivel

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

5.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.

• 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:


7
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

5.4 Caso de uso 4:

Caso de uso : Generar Reportes.

Actores : Administrador.

Tipo : Primario

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

5.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.

5.6 Caso de Uso 6

Caso de uso : Verificar Stock.

Actores : Vendedor.

Tipo : Secundario (include)

8
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.

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.

• Satisface el Requerimiento 9.

5.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

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 Sistema
1.- El Vendedor pide la
9
información del producto al
Cliente y las ingresa al Sistema.
2. - El Sistema verifica la existe
del producto con tales
características.
3. - El Vendedor muestra los
resultados de compatibilidad al
cliente.
4. - El sistema muestra todas las
características relacionadas con el
producto solicitado.
5. - El Vendedor muestra al
cliente las características del
producto relacionado.

Flujo Alterno
2. - 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

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
10
mostrárselo al Cliente.
2.- El Sistema imprime el
documento.

5.3 Caso de Uso 3

Nombre : 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 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.
2. - El sistema verifica la base de
datos y Agrega, Modifica,
Elimina algún producto según sea
el caso.
3- El Administrador decide
guardar los cambios realizados y
elige esa opción.

4. - El sistema Guarda los


cambios realizados y se cierra la
opción de Actualizar.

11
5.4 Caso de Uso 4

Caso de uso : Generar Reportes.

Actores : Administrador.

Tipo : Primario

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.

2. - El sistema verifica la opción


seleccionada y según a esta
opción realiza las consultas
adecuadas para mostrar los
resultados apropiados.

3- El Administrador guarda
reportes para posteriores
decisiones.
4. - El Administrador sale del
sistema.

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

5.5 Caso de Uso 5

12
Caso de uso : Generar Factura y/o Boleta.

Actores : Vendedor.

Tipo : Primario

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.

3. - El sistema llena la factura o


Boleta Correspondiente.
4. - El Sistema imprime dicho
5. - El vendedor entrega una copia documento.
de la impresión al Cliente.

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.

13
Vendedor Sistema

1. - El vendedor escribe la
cantidad de artículos que el
cliente solicita.
2. - El sistema muestra la
cantidad existente en el stock y
un mensaje de confirmación para
realizar la venta.

3. - El Vendedor realiza la venta.

Flujo Alterno
3. - 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.

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.

2.- El sistema verifica la


existencia de dicho código, si no
existe la agrega.
3.- El administrador ingresa todos
los artículos adquiridos,
ingresando también cantidad,
valor de compra y otros datos.

4.- El sistema actualiza el stock


correopodiente a dichos artículos
ingresados.

5.8 Caso de Uso 8

Caso de uso : Autentificar Usuario.

14
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.

Administrador, Vendedor Sistema

1. - El administrador o Vendedor
ingresar ID y contraseña para
acceder 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.
4. - Este usuario accede al
Sistema.

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

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

15
16
17
18
19
MODELO CONCEPTUAL
P e rs o n a
A p e lli do P
A p e lli do M
N o m b re s
DNI
S e xo
D i re c c i o n
T e l e fo n o
E m a il

0 ..* C lie n te
Tra b a ja d o r D o cu m e n to 0 ..*
Co d_ Cli e nte
C o d _ T ra b a j a d o r T ip o _ Do c
N i v e l A c ce so 1 ..* N ro _ D o c
0 ..*
C o n t ra se ñ a F e ch a
P ro fe si o n C o d _ T ra b a j a d o r
C a rg o

P Ju rid ica P N a tu ra l
R a zo n S o c i a l
RUC

Ve n d ed o r Ad m in is tra d o r
P rove e d o r
C o d _ P ro v e e d o r 1 ..* D o c u m e n to S a lid a D o cu m e n to S e rvi ci o1 ..*
R a zo n _ S o c i a l D o cu m e n to E n tra d a
1 ..1 0 ..* C o d _ C lie nte C o d _ C lie nte
RUC C o d _ P ro ve e d o r
D i re c c i o n
T e l e fo n o Articu lo
1 .. * C o d _ A rti c u l o
1 .. * 1 .. *
N o m b re _ A rti c u l o
Ma rca E n tra d aD e ta lle T i p o _ A rti cu lo
C o d _ M a rc a S a lid a D eta lle S e rvicioD eta lle
C o d _ P ro v e e d o r 1 ..1 C o d _ M a rc a
M a rc a 0 ..* 1 ..1 T ip o _ Do c N ro _ D o c
N ro _ D o c Un id _ M ed 0 ..*
tT i e m p o _ g a ra n t i a C o d _ A rt i c u l o P re c i o N ro _ D o c C o d _ S e rv i c i o
C o e f i c i e n te _ G a n a n ci a
1 ..1 C o d _ A rti c u l o D e sc ri p c io n
C a n ti d a d S to x k
P re c i o _ U n i t Ca ntid a d P re c i o
1 ..* P re c _ U n i t _ V e n ta C o d _ A rti c u l o
1 ..1

1 ..1

Articu lo H a rdw a re
A rti c u l o S o ftw a re
Tip o _ H a rd w a re C o d _ A rti c u l o
D e sc ri p c i o n C o d _ A rt ic u l o
C o d _ T i p o H a rd w a re
1 ..1 1 ..* T e cn o l o g i a V e rsi o n
N o m b re T i p o _ S o f tw a re
M o delo
D e sc ri p c i o n D e sc ri p c i o n
C o d _ T i p o H a rd w a re

1 ..1

1 .. *
C a ra cte risti ca H a rd w a re Articu lo D e ta lle C o m p u ta d o r Tip o _ C o m p u ta d o r
C o d _ A rt i c u l o C o d _ C o m p u ta d o r Co d_ T ip o Co m pu tad o r
C o d _ Tip o H a rd w a re 0 ..* 1 ..* 1 ..1 T i p o _ Co m p u ta d o r
C o d _ T i p o H a rd w a re Co d_ T ip o Co m p u tad o r
C o d _ C a ra cte ris tica 1 ..1 1 ..* D e sc ri p c i o n
C o d _ C a ra c te ri sti ca D e sc ri p c i o n
C a rac te ris tica E sp e c i fi ca c i o n
C o n fig u ra cio n 1 Ca ntid a d
C o n fig u ra cio n 2

1 . .*

C o m p u ta d o rD e ta lle
0 ..* C o d _ C o m p utad o r
C o d _ Articu lo
E s p e cifica cio n

20
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.

21
• Permite grabar,
actualizar e imprimir
proformas.

IDBoletas • Muestra la información


de 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
• Modelo de Análisis

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

El cliente proporci ona


losdetalles generales del
computador y sus datos

ArticuloHardware
Cli ente

Vendedor Interfaz de UsuarioFiltrar articulo hardware Computador


com ptatible

• Diagramas de Colaboración

23
Diagrama de colaboracion Realizar Proforma

Cliente proporciona datos


del articulo que qui ere
com prar al vendedor para
que los introduzca al
sistema

: Cliente
5: Buscar Articul o Compatible
: ArticuloHardware

9: Proporcionar datos del cliente


10: Transferir los detall es del cliente y solicitar actualizacion
6: Devolver articulo compatibl e
1: Proporcionar detalles articulo 2: Transferir los detalles 11: Transferir los detalles del cliente y sol icitar actualizacion
3: Crear objeto nuevo

4: Devolver objeto nuevo


8: Mostrar articulos compatibles 7: Proporcionar articulos compatibl es
: Vendedor : Interfaz de Usuario : Filtrar articulo hardware : Computador
com ptatible

14: Mostrar reconocimiento 13: Enviar reconocim iento 12: Enviar reconocim iento

• Caso de uso: Generar Factura y/o Boleta

• Diagramas de Actividad

24
• Modelo de Análisis

• Diagramas de Colaboración

D iagra ma de c o la bora cion genera r fac tura o bo le ta

4 : Ca l cu la r p re ci o d e a rti cu l o

: M a rca

1 : d a to s d e l c o m p u ta d o r a c e p ta d o s p o r e l cl ie n te 5 : De v o lv er p re c io d e a rti cu l o
2 : Cre a r o b je to n u ev o c o n da to s d e a rt i cu l o
3 : T ra n sfe ri r d a to s d e a rti cu lo

1 0 : D e vo l ve r fa ctu ra o b o l e ta 9 : De v o lv er fa c tu ra o 8b:oDe
le ta
vo lve r fa ctu ra o bo le ta 6 : T ra sfe ri r d a to s d e a rti cu l o y p re ci o
: Vendedor : I n te rfa z u su a rio : A rticu lo : C a lc u la rP re c io

7 : De vo l ve r fa c tu ra o b o l e t a

: Fa ctu ra b o l e ta

FLUJO DE DISEÑO

1.2. DISEÑO DE DIAGRAMAS


25
1.2.1. Diagrama de Clases

Pers ona
Apelli doP
Apelli doM
Nom b res
DNI
Sexo
Direccio n
T ele fo no
Em a il

0..* Cliente
Trabajador Docum ento 0..*
Cod_ Cli ente
Cod_T ra baja dor T ipo _Doc
Nive lAcceso 1..*
0..* Nro_ Doc
Contrase ña Fe ch a
Profesio n Co d_ T rab aj ad or
Carg o

PJuridica PNatural
RazonSoci al
RUC

Vendedor Adm inis trador


Proveedor
Co d_P ro ve edo r 1..* Docum entoSalida Do cum en toS ervi ci o 1..*
Ra zo n_Socia l Docum entoEntrada
1..1 0..* Cod_Cliente Cod_Cliente
RUC Cod_Proveedor
Direccion
T e lefo no Articulo
1..* Co d_A rticu lo
1..* 1 ..*
No m b re _A rticulo
Marca EntradaDetalle T ip o_ Arti cu lo
Cod_ M arca SalidaDetalle ServicioD etalle
Co d_Prove ed or 1..1 Co d_M a rca
M a rca 0..* 1..1 T ipo _Doc Nro _ Doc
Nro _Doc Un id_ M ed 0..*
tT i em po_ garan tia Co d_Articu lo Pre cio Nro_ Doc Co d_ Servicio
1..1 Cod_A rticulo De scripcion
Coeficie nte_Ganan ci a Ca ntida d Sto xk
Pre cio _Uni t Cantida d Pre cio
1..* Prec_Unit_Venta Co d_ Articulo
1..1

1..1

ArticuloHardware
Articulo So ftwa re
Tipo_Hardware Co d_ Articu lo
De scri pcion Cod_A rticu lo
Cod_T ip oHa rdware
1..1 1..* T e cno lo gia Versio n
Nom bre T ipo _ So ftware
M o del o
Descri pcion Descri pcio n
Co d_ T ipo Hard ware

1..1

1..*
Caracte risti ca Hardware ArticuloDetalle Com putador Tipo_Com putador
Co d_ Articulo Cod_ Co m p uta do r Co d_T ip oCo m putad or
Cod_TipoHardware 0..* 1..* 1..1 T ip o_ Co m pu tador
Co d_ T ipo Ha rdware Cod_ T ipoCo m putado r
Cod_Caracteris tica 1..1 1..* De scri pcio n
Co d_ Cara cteristi ca Descri pcio n
Caracteris tica Espe cifi cacion
Configuracion1 Ca ntida d
Configuracion2

1..*

Com putadorDetalle
0..* Cod_Com putador
Cod_Articulo
Es pecificacion

1.2.2. Diagramas de Secuencia

26
27
28
I. FLUJO DE IMPLEMENTACIÓN

IMPLEMENTACIÓN DE LA CAPA FISICA


MODELO LOGICO
Trabajador
Column Name Condensed Type Nullable
Cod_ Trabaj... TCod_ Trabajador:varchar(6) No

ApellidoP varchar(25) No

ApellidoM varchar(25) No
Cliente
Nombres varchar(30) No Column Name Condensed Type Nullable

DNI varchar(8) No Cod_ Cliente TCod_Cliente:v... No

NivelAcceso varchar(2) Yes RazonSocial varchar(30) Yes

Contraseña varchar(16) Yes RUC varchar(11) Yes

Prof_Ocu varchar(35) No ApellidoP varchar(20) Yes

Cargo varchar(20) No ApellidoM varchar(20) Yes

Email varchar(40) No Nombres varchar(25) Yes

DNI varchar(8) Yes

DocumentoEntrada
Column Name Condensed Type Nullable Direccion varchar(30) Yes

Cod_ Provee... TCod_Proveedor:varchar(6) No Telefono varchar(12) Yes

Nro_ Doc TNro_Doc:varchar(9) No Email varchar(40) Yes

Fecha datetime No

Cod_ Trabaj... TCod_Trabajador:varchar(6) No


DocumentoSalida
Column Name Condensed Type Nullable
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


Proveedor
Cod_Provee... TCod_Proveedor:varchar(6) No

RazonSocial varchar(30) No Column Name Condensed Type Nullable Column Name Condensed Type Nullable
Column Name Condensed Type Nullable
RUC varchar(11) No EntradaDetalle
Cod_Provee... TCod_ Proveedor:varchar(6) No SalidaDetalle
Tipo_Doc TTipo_ Doc:varchar(3) No MarcaTCod_Marca:va...
Cod_ Marca No
Direccion varchar(25) No Nro_Doc TNro_ Doc:varchar(9) No Nro_Doc TNro_Doc:varchar(9) No
Marca varchar(20) No
Telefono varchar(12) No Cod_Articulo TCod_ Articulo:varchar(9) No Cod_Articulo TCod_Articulo:varchar(9) No
Tiempo_Gar... varchar(10) No
Email varchar(40) Yes Cantidad int No Cantidad int No
Coef_Ganan... numeric(3, 2) No
PaginaWeb varchar(40) Yes Precio_Unit numeric(8, 2) No Prec_Unit_V... numeric(8, 2) No

Column Name Condensed Type Nullable


Column Name Condensed Type Nullable
Cod_Articulo TCod_ Articulo:varchar(9) No
Cod_ Articulo TCod_Articulo:varchar(9) No

ArticuloSoftware
Version varchar(8) No
Articulo
Nombre_Articulo varchar(20) No
Column Name Condensed Type Nullable
Tipo_ Articulo varchar(10) No
Tipo_Software varchar(15) No
Cod_ Articulo TCod_ Articulo:varchar(9) No
Cod_Marca TCod_ Marca:varchar(3) No
Descripcion varchar(30) No
ModeloArticuloHardware
varchar(15) No
UnidadMed varchar(12) No
Descripcion varchar(50) No
Precio numeric(8, 2) No
Tecnologia varchar(15) Yes
Stock int No
Cod_ TipoHardware TCod_ TipoHardware:varchar(6) No

Column Name Condensed Type Nullable


Cod_Computa... TComputador:varchar(6) No

Cod_Articulo TCod_Articulo:varchar(9) No
ComputadorDetalle
Especificacion varchar(50) No
Column Name Condensed Type Nullable
Column Name Condensed Type Nullable Cod_TipoHa... TCod_TipoHardware:varchar(6) No
Cod_ Articulo TCod_Articulo:... No Nombre_Ha... varchar(20) No
Cod_ TipoHa... TCod_TipoHar... No TipoHardware
Descripcion varchar(30) No
ArticuloDetalle
Cod_ Caracte... TCod_Caracter... No

Especificacion varchar(10) No

Cantidad varchar(3) Yes

Column Name Condensed Type Nullable


Cod_Comput... TComputador:varchar(6) No

Cod_TipoCo... TCod_ TipoComputador:varchar(3) No

Descripcion varchar(30) Yes


Computador
Column Name Condensed Type Nullable
Cod_TipoHa... TCod_ TipoHardware:varchar(6) No

Column Name Condensed Type Nullable Cod_Caracte... TCod_ Caracteristicas:varchar(4) No

Cod_TipoComputador TCod_TipoComputador:varchar(3) No Caracteristica varchar(20) No


CaracteristicasHardware
Configuracio...
varchar(6) Yes
Tipo_ Computador varchar(20) No

Descripcion varchar(30) No Configuracio... varchar(6) Yes

TipoComputador

29
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.-

30
 Cod_Proveedor : TCod_Proveedor (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.-

 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.

31
• Otros Atributos.-

 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.-

32
 Cod_Proveedor : TCod_Articulo (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.

 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.

33
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 : 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.-

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

Atributos

• 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.-

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

• Otros Atributos.-

 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)

36
Esta funcion nos devuelve una lista de todas los marcas existentes.
Parametros:

MarcaIni  varchar (6).-


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).-

37
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)


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).-

38
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).-


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_ArticuloHardwar
eIni , Cod_ArticuloHardwareFin )
Function que devuelve las características especificas de un Artículo de hardware
y sus Configuraciones con otro hardware.

13 fnExtraerEspecificacionTipoHardwareConfiguracion(Cod_ArticuloHardw
areIni, 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.

39
5.3 Scripts.-
/* ********************************************************************
CREACION DE LA BASE DE DATOS
******************************************************************** */
use master
go
create database BDCrazyCorp
on 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)
)

40
create table Proveedor
(Cod_Proveedor TCod_Proveedor,
RazonSocial varchar(30) not null,
RUC varchar(11) not null,
Direccion varchar(25) not null,
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 int
not 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)

41
)

create table Cliente


(Cod_Cliente TCod_Cliente,
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 int
not 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),

42
Foreign Key(Cod_TipoHardware) references TipoHardware(Cod_TipoHardware)
)

create table ArticuloHardware


(Cod_Articulo TCod_Articulo,
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),

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

create table ArticuloSuministro


(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','Syssaca@Hotmail.com')

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','')

44
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','')
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','')

45
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','')
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')

46
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')
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 TABLE
AS
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 A
ON SD.Cod_Articulo = A.Cod_Articulo
WHERE ((@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 TABLE
AS
RETURN (SELECT SD.Cod_Articulo,"CantidadVentas" = count(Cod_Articulo)
FROM DocumentoSalida DS inner join SalidaDetalle SD
ON DS.Tipo_Doc = SD.Tipo_Doc and DS.Nro_Doc = SD.Nro_Doc
WHERE ((@mes = '*') OR Month(Fecha) = cast(@mes as int)) and
((@anio = '*') or Year(Fecha) = cast(@anio as int))

47
GROUP BY (SD.Cod_Articulo)
)
--select * from dbo.ArticulosVendidosFecha('*','2008')

CREATE FUNCTION fnListadoMarca(@MarcaIni varchar(10), @MarcaFin varchar(10))


RETURNS TABLE
AS
RETURN ( SELECT *
FROM Articulo A
WHERE (@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 TABLE
AS
RETURN (SELECT *
FROM Articulo A
WHERE 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 TABLE
AS
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) T1
ON 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 TABLE
AS
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

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

GROUP BY A.Cod_Marca) T1
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 TABLE
AS
RETURN (SELECT Cod_Trabajador,"CantidadVentas" = count(Cod_Trabajador)
FROM DocumentoSalida
WHERE ((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 TABLE
AS
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 TABLE
AS
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 TABLE
AS
RETURN (SELECT *
FROM Cliente

49
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
******************************************************************* */
CREATE FUNCTION fnArticulosPorTipoHardware(@Cod_TipoHardwareIni varchar(6),
@Cod_TipoHardwareFin varchar(6))
RETURNS TABLE
AS
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 TABLE
AS
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 TABLE
AS
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

50
((@Cod_ArticuloHardwareFin = '*') OR (Cod_Articulo <=
@Cod_ArticuloHardwareFin)))
--select * from dbo.fnExtraerEspecificacionTipoHardwareConfiguracion('*', '*','PM')

/* *******************************************************************
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 TABLE
AS
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 tipo
de hardware
***********************************************************************/
CREATE FUNCTION fnBuscarCaracteristicaEspecificaConfiguracion(@Caracteristica varchar(20),
@Especificacion varchar(10), @Cod_TipoHardware varchar(6))
RETURNS TABLE
AS
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_Articulo
WHERE 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 TABLE
AS
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

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

/* *******************************************************************
Procedimiento que devuelve las características especificas de un
Computador
******************************************************************* */
create procedure spu_GenerarProforma @Cod_ArticuloHardware varchar(9)
as
begin

-- Crear tabla temporal con las caracteristicas especificas del tipo de hardware
select * into #CAC
from
dbo.fnCaracteristicasArticuloHardwareConfiguraciones(@Cod_ArticuloHardware,@Cod_ArticuloHardw
are)

-- Crear tabla de resultados


create table #Computador
( Cod_Articulo varchar(9),
Cod_TipoHardware varchar(6),
Descripcion varchar(50));

-- Declarar variables para utilizar en el cursor


DECLARE @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 anidado


declare @Cod_ArticuloCom varchar(9),
@Cod_TipoHardwareCom varchar(6),
@EspecificacionCom varchar(10)
-- Inicializar variables auxiliares cursor anidado
SET @Cod_ArticuloCom = ''
SET @Cod_TipoHardwareCom = ''
SET @EspecificacionCom = ''

-- Declarar el cursor
DECLARE cu_CaracteristicaasPlaca CURSOR
FOR SELECT Cod_Articulo, Especificacion, Configuracion1
FROM #CAC

-- Abrir el cursor

52
OPEN cu_CaracteristicaasPlaca

-- Recuperar el primer registro en las variables


FETCH NEXT FROM cu_CaracteristicaasPlaca
INTO @Cod_Articulo, @Cod_TipoHardware, @Configuracion1

-- Procesar cada registro


WHILE @@FETCH_STATUS = 0
BEGIN

-- 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 variables


FETCH NEXT FROM cu_CaracteristicasEspecificasTipoHardware
INTO @Cod_ArticuloCom, @Cod_TipoHardwareCom, @EspecificacionCom

-- Procesar cada registro


WHILE @@FETCH_STATUS = 0
BEGIN
-- Insertar datos
INSERT INTO #Computador
values(@Cod_ArticuloCom, @Cod_TipoHardwareCom,
@EspecificacionCom)

-- Recuperar siguiente registro


FETCH NEXT FROM cu_CaracteristicasEspecificasTipoHardware
INTO @Cod_ArticuloCom, @Cod_TipoHardwareCom,
@EspecificacionCom

END

-- Cerrar el cursor
CLOSE cu_CaracteristicasEspecificasTipoHardware
DEALLOCATE cu_CaracteristicasEspecificasTipoHardware

-- Asignar datos de registro actual a variables auxiliares


SET @Cod_ArticuloAux = @Cod_Articulo
SET @Cod_TipoHardwareAux = @Cod_TipoHardware
SET @EspecificacionAux = @Especificacion

-- Recuperar siguiente registro


FETCH NEXT FROM cu_CaracteristicaasPlaca
INTO @Cod_Articulo, @Especificacion, @Configuracion1
END

-- Cerrar el cursor
CLOSE cu_CaracteristicaasPlaca
DEALLOCATE cu_CaracteristicaasPlaca

-- Mostrar caracteristicas dela placa


SELECT * FROM #CAC

-- Mostrar consulta con los datos generados


SELECT C.Cod_Articulo, A.Descripcion, C.Cod_TipoHardware

53
INTO #Proforma
FROM #Computador C, ArticuloHardware A
WHERE C.Cod_Articulo = A.Cod_Articulo

SELECT C.Cod_Articulo, T.Nombre_Hardware, C.Descripcion, C.Cod_TipoHardware


FROM #Proforma C, TipoHardware T
WHERE C.Cod_TipoHardware = T.Cod_TipoHardware

END;

--exec spu_ComputadorComputadorDetalle 100

CREATE TRIGGER tr_EntradaStock


on EntradaDetalle
for INSERT, UPDATE, DELETE
AS
BEGIN
-- Recuperar Cod_Articulo UPDATE
declare @Cod_Articulo dbo.TCod_Articulo
declare @Cantidad int

-- Si es DELETED
if EXISTS(SELECT * FROM DELETED)
BEGIN
-- Recuperar datos antes del UPDATE
select @Cod_Articulo = Cod_Articulo
FROM DELETED;
select @Cantidad = Cantidad
FROM DELETED;

-- Revertir
UPDATE Articulo
SET Stock = Stock - @Cantidad
WHERE Cod_Articulo = @Cod_Articulo
END;

-- Si es INSERTED
if EXISTS(SELECT * FROM INSERTED)
BEGIN
-- Recuperar datos antes del UPDATE
select @Cod_Articulo = Cod_Articulo
FROM INSERTED;
select @Cantidad = Cantidad
FROM INSERTED;

-- Revertir
UPDATE Articulo
SET Stock = Stock + @Cantidad
WHERE Cod_Articulo = @Cod_Articulo
END;

END;

CREATE TRIGGER tr_SalidaStock


on SalidaDetalle
for INSERT, UPDATE, DELETE

54
AS
BEGIN
-- Recuperar Cod_Articulo UPDATE
declare @Cod_Articulo dbo.TCod_Articulo
declare @Cantidad int

-- Si es DELETED
if EXISTS(SELECT * FROM DELETED)
BEGIN
-- Recuperar datos antes del UPDATE
select @Cod_Articulo = Cod_Articulo
FROM DELETED;
select @Cantidad = Cantidad
FROM DELETED;

-- Revertir
UPDATE Articulo
SET Stock = Stock + @Cantidad
WHERE Cod_Articulo = @Cod_Articulo
END;

-- Si es INSERTED
if EXISTS(SELECT * FROM INSERTED)
BEGIN
-- Recuperar datos antes del UPDATE
select @Cod_Articulo = Cod_Articulo
FROM INSERTED;
select @Cantidad = Cantidad
FROM INSERTED;

-- Revertir
UPDATE Articulo
SET Stock = Stock - @Cantidad
WHERE Cod_Articulo = @Cod_Articulo
END;

END;

CREATE TRIGGER tr_ArticuloDetalle_Descripcion1


on ArticuloDetalle
for UPDATE
AS
BEGIN
-- Recuperar atributos antes del update
declare @Cod_Articulo dbo.TCod_Articulo
select @Cod_Articulo = Cod_Articulo
FROM DELETE;

declare @Especificacion varchar(10)


select @Especificacion = Especificacion
FROM DELETE;

-- Actualizar Descripcion
UPDATE ArticuloHardware
set Descripcion = Rtrim(Descripcion)+' '+@Especificacion
WHERE Cod_Articulo = @Cod_Articulo

END;

55
56
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
{

57
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
}

58
/* ************************************************* */
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);
}

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

59
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 */

60
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

61
}

/* ************************************************* */
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_Caracter
isticas")
{
}

/* 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
}

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

62
public override string ArgumentoSentenciaUpDate(params
object[] Atributos)
{
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

63
"Tecnologia = '" + Atributos[2] + "'," +
// ----- Tecnologia
"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

64
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 */

65
public CCaracteristicasHardware() :
base("CaracteristicasHardware","Cod_TipoHardware","Cod_Caracteristicas
")
{
}

/* 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)
{

66
return "'" + Atributos[0] + "'," + // -----
Cod_Cliente
"'" + 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;

67
namespace AppSistema.CapaLogica
{
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

68
"'" + Atributos[1] + "'," + // -----
Cod_Articulo
"'" + 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

69
}
}
}

• 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

70
{
public class CEntradaDetalle : CEntidad
{
/* 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 */
/* ************************************************* */

71
public override string ArgumentoSentenciaInsert(params
object[] Atributos)
{
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)

72
{
return "Cod_Proveedor = '" + Atributos[0]+ "'," +
// ----- Cod_Vendedor
"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

73
}
}
}

• 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;

74
namespace AppSistema.CapaLogica
{
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

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

/* ************************************************* */
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

76
"'" + Atributos[7] + "'," + // ----- Profesion
"'" + Atributos[8] + "'," + // ----- Cargo
"'" + "" + "'"; //Email
}

/* ************************************************* */
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);
}

77
}
}

IMPLEMENTACIÓN DE LA CAPA INTERFAZ EN C #

Formulario autenticacion

MENU DEL SISTEMA

78
FORMULARIO REALIZAR PROFORMA

FORMULARIO GENERAR BOLETA DE VENTA

79
FORMULARIO GENERAR FACTURA

FORMULARIO MANTENIMIENTO ARTICULO

80
FORMULARIO MANTENIMIENTO MARCAS

FORMULARIO MANTENIMIENTO PROVEEDOR

81
FORMULARIO REGISTRAR ENTRADA

FORMULARIO MANTENIMIENTO TIPOHARDWARE

82
FORMULARIO MANTENIMIENTO TRABAJADOR

83

Vous aimerez peut-être aussi