Académique Documents
Professionnel Documents
Culture Documents
CUSCO
FACULTAD DE CIENCIAS QUIMICAS, FISICAS Y
MATEMATICAS
LABORATOTIO V
ALUMNOS:
DOCENTE:
Arturo Cuba
1
CUSCO - 2009
Tabla de contenido
Tabla de contenido.........................................................................................2
Modelo Conceptual.......................................................................................20
FLUJO DE ANALISIS.......................................................................................21
Flujo de Diseño.............................................................................................25
I.Flujo de implementación............................................................................29
Descripción de Servicios...............................................................................36
2
PRESENTACIÓN
3
MODELO DEL NEGOCIO.-
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.
4
2.2.- Identificación de Procesos
• Generar reportes
• Administrador
5
• Vendedor
• Cliente
6
A continuación detallaremos sólo los casos de uso más importantes que
identificamos:
Actores : Vendedor.
Tipo : Primario
• Satisface el Requerimiento 2.
Actores : Cliente.
• Satisface el Requerimiento 5
Actores : Administrador
Tipo : Primario
Cada vez que se realiza una venta, el sistema Actualiza el Stock del
Artículo.
• Satisface el Requerimiento 6
Actores : Administrador.
Tipo : Primario
• Satisface el Requerimiento 4
• Satisface el Requerimiento 1 y 6.
Actores : Vendedor.
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.
Actores : Administrador
Tipo : Primario
• Satisface el Requerimiento 9.
Tipo : Primario
Tipo : Primario.
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.
Actores : Vendedor.
Tipo : Secundario.
Vendedor Sistema
1. - El Vendedor Realiza la
Impresión del documento para
10
mostrárselo al Cliente.
2.- El Sistema imprime el
documento.
Actores : Administrador.
Tipo : Primario
Cada vez que se realiza una venta, el sistema Actualiza el Stock del
inventario.
Administrador Sistema
11
5.4 Caso de Uso 4
Actores : Administrador.
Tipo : Primario
Administrador Sistema
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.
12
Caso de uso : Generar Factura y/o Boleta.
Actores : Vendedor.
Tipo : Primario
Administrador Sistema
Actores : Vendedor.
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.
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.
Actores : Administrador
Tipo : Primario
14
Actores : Administrador, Vendedor.
Tipo : Primario
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.
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
CLASE DE INTERFAZ
NOMBRE RESPONSABILIDAD
• Registra Nuevas
Facturas
• Manda la orden de
impresión de la factura
actual.
• Muestra las
características de los
diferentes artículos.
• Muestra artículos
según sus
compatibilidades.
21
• Permite grabar,
actualizar e imprimir
proformas.
• Registra nuevas
Boletas.
• Manda la orden de
impresión de la Bolera
actual.
• 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
ArticuloHardware
Cli ente
• Diagramas de Colaboración
23
Diagrama de colaboracion Realizar Proforma
: Cliente
5: Buscar Articul o Compatible
: ArticuloHardware
14: Mostrar reconocimiento 13: Enviar reconocim iento 12: Enviar reconocim iento
• Diagramas de Actividad
24
• Modelo de Análisis
• Diagramas de Colaboración
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
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
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
26
27
28
I. FLUJO DE IMPLEMENTACIÓN
ApellidoP varchar(25) No
ApellidoM varchar(25) No
Cliente
Nombres varchar(30) No Column Name Condensed Type Nullable
DocumentoEntrada
Column Name Condensed Type Nullable Direccion varchar(30) Yes
Fecha datetime 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
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
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
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
TipoComputador
29
1.- Tabla Trabajador.-
Descripción.- Esta tabla contiene todos los datos de todos trabajadores existentes el
empresa crazy CORP.
Atributos
• Primarios.-
• Otros Atributos.-
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.-
Descripción.- Esta tabla contiene la relación de todas las marcas de artículos existentes
en el almacén de productos.
Atributos
• Primarios.-
• Otros Atributos.-
Descripción.- Esta tabla contiene todos los datos de todos los artículos que existen.
Atributos
• Primarios.-
31
• Otros Atributos.-
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.-
Nro_Doc : TCod_Articulo(varchar(8))
Es el otro de los Identificadores, Indica el Numero de documento con
el que ingresa.
• Otros Atributos.-
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.
• Otros Atributos.-
Descripción.- Esta tabla contiene todos los datos sobre los clientes de la empresa.
Atributos
• Primarios.-
• Otros Atributos.-
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.-
Nro_Doc : TCod_Articulo(varchar(8))
Es el otro de los Identificadores, Indica el Numero de documento
que se emite.
• Otros Atributos.-
Descripción.- Esta tabla contiene más atributos sobre un documento pero a un nivel
mucho mayor, con mayor detalle.
Atributos
• Primarios.-
• 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.
34
Descripción.- Esta tabla contiene una lista de todos los tipos de hardware existentes en
el almacén de artículos.
Atributos
• Primarios.-
• Otros Atributos.-
Atributos
• Primarios.-
• Otros Atributos.-
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.-
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:
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:
3 ArticulosMarca(MarcaIni, MarcaFin)
36
Esta funcion nos devuelve una lista de todas los marcas existentes.
Parametros:
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:
37
Este parametro nos sirve para determinar hasta que marca llegara la lista
resultante. Puede ser ‘*’ para especificar hasta el final.
8 fnClientesDNI(DNI)
Recupera todo los datos de un cliente con el DNI indicado como parametro.
Parametros:
9 fnProveedoresRUC(RUC)
Recupera todo los datos de un Proveedor con el RUC indicado como parametro.
Parametros:
10 fnClientesCodigos(Cod_ClienteIni,Cod_ClienteFin)
Recupera una tabla de clientes filtrando sus codigos desde uno inicial hasta uno
final.
Parametros:
38
Este parametro nos sirve para determinar el codigo de cliente desde el
cual empezara la busqueda. Puede ser ‘*’ para especificar desde el inicio.
13 fnExtraerEspecificacionTipoHardwareConfiguracion(Cod_ArticuloHardw
areIni, Cod_ArticuloHardwareFin, Cod_TipoHardware )
14 fnListaCaracteristicasArticuloHardCofigXTipoHard(Cod_TipoHardware)
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.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
/* ********************************************************************
CREACION DE TABLAS
******************************************************************** */
use BDCrazyCorp
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)
)
Primary Key(Cod_Marca)
)
Primary Key(Cod_Articulo),
Foreign Key(Cod_Marca) references Marca(Cod_Marca)
)
41
)
Primary Key(Cod_Cliente)
)
Primary Key(Tipo_Doc,Nro_Doc),
Foreign Key(Cod_Cliente) references Cliente(Cod_Cliente),
Foreign Key(Cod_Trabajador) references Trabajador(Cod_Trabajador)
)
Primary Key(Cod_TipoHardware)
)
42
Foreign Key(Cod_TipoHardware) references TipoHardware(Cod_TipoHardware)
)
Primary Key(Cod_Articulo),
Foreign Key(Cod_TipoHardware) references TipoHardware(Cod_TipoHardware),
Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)
)
Primary Key(Cod_Articulo),
Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)
)
Primary Key(Cod_TipoComputador)
)
Primary Key(Cod_Computador),
Foreign Key(Cod_TipoComputador) references
TipoComputador(Cod_TipoComputador)
)
43
Foreign Key(Cod_Computador) references Computador(Cod_Computador),
Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)
)
Primary Key(Cod_Articulo),
Foreign Key(Cod_Articulo) references Articulo(Cod_Articulo)
)
/* ********************************************************************
INGRESO DE DATOS
******************************************************************** */
GO
USE BDCRAZYCORP
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 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')
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','')
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')
--***********************************************************************
--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')
--***********************************************************************
--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)
ON (SD.Cod_Articulo = AH.Cod_Articulo)
GROUP BY AH.Cod_TipoHardware) T1
ON TH.Cod_TipoHardware = T1.Cod_TipoHardware)
--***********************************************************************
--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)
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
--************************************************
--************************************************
--Recupera Proveedores pasandole como parametro RUC
--************************************************
--************************************************
--Recupera Clientes pasandole como SUS Codigos Inicio y fin,
-- * si es para todos
--************************************************
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)
/* *******************************************************************
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)
-- Declarar el cursor
DECLARE cu_CaracteristicaasPlaca CURSOR
FOR SELECT Cod_Articulo, Especificacion, Configuracion1
FROM #CAC
-- Abrir el cursor
52
OPEN cu_CaracteristicaasPlaca
-- Abrir el cursor
OPEN cu_CaracteristicasEspecificasTipoHardware
END
-- Cerrar el cursor
CLOSE cu_CaracteristicasEspecificasTipoHardware
DEALLOCATE cu_CaracteristicasEspecificasTipoHardware
-- Cerrar el cursor
CLOSE cu_CaracteristicaasPlaca
DEALLOCATE cu_CaracteristicaasPlaca
53
INTO #Proforma
FROM #Computador C, ArticuloHardware A
WHERE C.Cod_Articulo = A.Cod_Articulo
END;
-- 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;
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;
-- 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 #
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];
}
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;
}
}
/* ************************************************* */
/* 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);
/* ************************************************* */
/* 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);
/* ************************************************* */
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);
/* ************************************************* */
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);
}
• CLASE ARTICULO.CS
using System;
using System.Collections.Generic;
using System.Text;
namespace AppSistema.CapaLogica
{
public class CArticulo : CEntidad
{
/* CONSTRUCTORES */
/* 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
}
}
}
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
}
}
}
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
}
}
}
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
}
}
}
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
}
• 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
}
• CLASE CTRABAJADOR
using System;
using System.Collections.Generic;
using System.Text;
namespace AppSistema.CapaLogica
{
public class CTrabajador : CEntidad
{
/* CONSTRUCTORES */
/* 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
}
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;
}
77
}
}
Formulario autenticacion
78
FORMULARIO REALIZAR PROFORMA
79
FORMULARIO GENERAR FACTURA
80
FORMULARIO MANTENIMIENTO MARCAS
81
FORMULARIO REGISTRAR ENTRADA
82
FORMULARIO MANTENIMIENTO TRABAJADOR
83