Documente Academic
Documente Profesional
Documente Cultură
En este documento la planificación y gestión del proyecto utiliza la fases que plantea la
metodología de programación extrema (XP), para el desarrollo del producto utiliza el Framework
SCRUM y UML para documentar los artefactos del sistema
DOCENTE
Página 1
INDICE
CAPITULO I Pág.
PERFIL DE PROYECTO
1.1. INTRODUCCION 4
1.2. ANTECEDENTES 5
1.3. DESCRIPCION DEL PROBLEMA 5
1.4. SITUCACION PROBLEMÁTICA 6
1.5. JUSTIFICACION 6
1.5.1. PERSONAL 6
1.5.2. TECNICA 6
1.5.3. TEORICA 7
1.6. OBJETIVOS 7
1.6.1. OBJETIVO GENERAL 7
1.6.2. OBJETIVOS ESPECIFICOS 7
1.7. METODOLOGIA 7
1.8. ALCANCE 8
1.9. CRONOGRAMA 8
CAPITULO II
Página 2
PARTE I
ASPECTOS GENERALES
Página 3
CAPÍTULO I
1.1. INTRODUCCION
Los sistemas de información hoy en día son fundamentales para las empresas porque
existe un mejor control de la información de las actividades que realiza la empresa. En
este trabajo se buscó mejorar el funcionamiento de una empresa que no contaba con
este sistema.
Hoy en día la venta de aceite es importante para todas las personas y empresas ya
que gracias al avance de la tecnología se usan maquinarias y vehículos para la
mayoría de las actividades diarias y estas maquinarias y vehículos necesitan aceite
para que estos tengan un buen funcionamiento porque sin el aceite se producen
desgaste de algunas piezas que están en constante funcionamiento.
Este trabajo plantea un sistema que ayude a la empresa a tener un control sobre las
actividades de compra y venta. Cuando se tiene un buen control se mejora el
rendimiento de la empresa.
Para conseguir esto, es necesario realizar una investigación sobre las actividades de
la empresa mediante entrevistas, cuestionarios y la observación para obtener
información que nos sirva para desarrollar un sistema que ayude en el control de
compra y venta de la empresa.
Página 4
1.2. ANTECEDENTES
Esta empresa fue fundada en el año 1977 por el señor Pastor Colque Colque. esta se
encontraba a media cuadra de la “Rotonda Sur”- Carretera Santa Cruz.
Página 5
No cuenta con ningún sistema para registrar las compras y ventas de un
producto como tampoco un control de inventario.
Dada la falta de control existen productos en la empresa que lleva mucho
tiempo y el gerente no tiene conciencia del valor estimado de estos productos
ya que estos cambian con el tiempo.
No existe ningún registro del ingreso de ganancias de los productos vendidos.
No se tiene una ubicación de los productos, en que almacén se encuentran,
cuantos productos ingresan y salen de dichos almacenes.
1.5. JUSTIFICAION
1.6. PERSONAL
Por conocimiento propio del desarrollo de un sistema de información con el
modelo XP, obtener experiencia en la realización de un proyecto, poder mejorar el
rendimiento de una empresa y aprobar la materia.
1.7. TECNICA
Página 6
1.8. TEORICA
Para este trabajo nos basamos en metodología técnica tomando como referencia
lo aprendido en la materia base de datos I y II, diapositivas referente a la materia,
libros y tutoriales.
1.9. OBJETIVOS
1.9.1. OBJETIVO GENERAL
Realizar una encuesta para saber las necesidades y problemas que tiene la
empresa en el ámbito de compra y venta.
Analizar toda la información recaudada para ver los problemas y necesidades que
tiene la empresa.
Desarrollar esl sistema usando las 3 capaz, capa negocio, capa de presentación y
capa de datos.
Realizar pruebas.
1.10. METODOLOGÍA
Página 7
1.11. ALCANCE
Todo Aceite
Administracion
Venta Compra Almacen de usuario
Cantidas de Reg. de
Reg. Ventas Producto privilegios
compra
Registro
Reg. Producto Cantidad
Compra
Página 8
1.12. CRONOGRAMA
Cronograma
02 de Julio de 2014 Se fue a conocer la empresa y preguntar al
administrador si contaba con un registro de
compra y venta.
15 de Julio de 2014 Se realizó una encuesta al administrador para
obtener mayor información sobre las actividades
de la empresa y los problemas que tenía la
empresa en el área de compra y venta, también se
realizó una encuesta a los empleados para
obtener la mayor información posible
23 de Julio de 2014 Se empezó a analizar la información recaudada
esencialmente en el ámbito de compra y venta
03 de agosto de 2014 Se realizó el diseño conceptual y el diseño lógico
de la base de datos
12 de agosto de 2014 Se realizó el diseño físico de la base de datos
20 de agosto de 2014 Se realizó el diseño físico de la base de datos
30 de agosto de 2014 Se empezó a implementar el diseño a través del
SQL Server.
08 de Septiembre de 2014 Se empezó a desarrollar el sistema de información
usando el modelo de 3 capas
17 de Septiembre de 2014 Se desarrolló la capa de datos
24 de Septiembre de 2014 Se desarrolló la capa negocio
08 de Octubre de 2014 Se desarrolló la capa de presentación
18 de Octubre de 2014 Se siguió implementando las 3 capas
28 de Octubre de 2014 Se presentó una primera versión
08 de Noviemre de 2014 Se empezó a mejorar de nuevo el sistema
15 de Noviembre de 2014 Se desarrolló la documentación usando el modelo
xp
25 de Noviembre de 2014 Se presentó la segunda versión del sistema
28 de Noviembre de 2014 Se siguió mejorando el sistema con los últimos
detalles
Página 9
08 de Diciembre de 2014 Se realizaron los ultimos ajustes en la
documentación y en el sistema
11 de Diciembre de 2014 Presenacion final
Página
10
CAPITULO II: REQUERIMIENTOS
Página
11
2.1. REQUERIMIENTOS FUNCIONALES (PRODUCT BACKLOG)
Código MTRB-SCRUM-REQ-SRS-001
Fecha creación
Lista de distribución
En fecha 04/12/2014
Página
12
Nro Como probarlo Departamento Estimación
Nombre del (Atributos de calidad) sección (History
requerimiento point)
Página
13
RF08 Gestionar Permite registrar, modificar, eliminar y Administración 24
proveedores buscar los datos de los proveedores
Página
14
2.2. REQUERIMIENTOS NO FUNCIONALES
La capacitación del personal, en el manejo de software y mantenimiento del sistema del sistema
deberá considerar un tiempo considerable de por lo menos 40horas laborales de capacitación (por
día mínimo 1hora), hasta que los lineamientos de manejo del sistema y otros hayan sido
debidamente adquiridos por el personal previamente asignado.
El usuario ingresara al sistema con su clave y contraseña, que será validadas por el sistema, y los
permisos al sistema según el rol que tiene asignado.
2.2.3. Confiabilidad
La aplicación puede estar disponible 13 horas de lunes a Viernes en horarios 07:30 am a 19:30
pm durante todo el año para los empleados de la empresa.
Debido a que cualquier usuario con usuario y contraseña (registrado en sistema) puede tener
acceso al sistema, es necesario hacer notar que para cumplir con la mera de la disponibilidad del
sistema, se deberá analizar cierto parámetro como: Rendimiento de servidor, Calidad del enlace y
calidad de conexión de red local para el usuario final.
El tiempo máximo de fuera de operaciones depende del funcionamiento del servidor como ser:
hardware del ordenador, base de datos y la infraestructura de red. El mismo debe ser: fallas
comunes 10 minutos (aprox) o fallas no comunes 1 hora (aprox)
2.2.4 Performance
Tiempo de respuesta
El tiempo de respuesta al acceso del usuario debe ir de 7 segundos, la primera vez que ingresa al
sistema, después menos de 5 segundos
El tiempo de repuesta para una tracción promedio también debe ser de 7, la primera vez que se
ingresa al sistema, después menos de 5 segundos
Página
15
El tiempo de respuesta para una transacción promedio también debe ser de 7 segundos.
Estándares de diseño
Versión de framework 4
Estándares de arquitectura
Cliente de escritorio
La aplicación deberá ser accesible utilizando un ordenador Core i3 o superior con sistema
Operativo Windows7 o superior (exclusivamente de Microsoft).
Servidor de datos
Lenguaje de programación
La aplicación debe desarrollarse en Visual Studio.Net 2012, utilizando Windows Form de Visual
C#.net y derivados de SQL con T/SQL para el motor de base de datos SQL Server2012
1.2.6. Interfaces
Interfaz de usuario
Los usuarios necesitan un dispositivo que mediante una interfaz de red (Dominio de red Local),
Active Directory, etc.) Les permita acceder al sistema, vía red Local.
Página
16
Este dispositivo puede estar basado en cualquier arquitectura pero deberá disponer al menos de
un procesador con capacidad suficiente para ejecutar el sistema contable
Interfaz de comunicaciones
Existe una conexión entre los usuarios y el servidor donde está alojado la base de datos:
Los usuarios cliente se conectaran al sistema contable mediante una red local. Esta
conexión la realizarán desde su oficina en la misma infraestructura de la empresa.
Para el Entorno de Red: la aplicación deberá tener la capacidad de funcionar en un
entorno de red LAN.
Interfaz de software
Por otra parte el servidor de base de datos (SQL Server 2012 Enterprise Edition) se implementará
bajo el sistema operativo Windows Server 2012
Página
17
3.1. ESPECIFICACION DE REQUERIMIENTOS DE SOFTWARE
Página
18
A diferencia de la metodología tradicional, XP utiliza las historias de usuario para la
especificación de requerimiento, permitiendo disminución. XP presenta 4 valores que seguirlos y
utilizarlos facilita la especificación de requerimientos:
Las historias de usuario permiten obtener los requerimientos del sistema a implementar los
primeros requerimientos por parte del usuario, es importante no detallar las historias del
usuario porque son utilizadas solo para dar una pequeña visión de lo que requiere obtener.
Cuando se inicie la fase de desarrollo el investigador con la ayuda del usuario detallaran las
historias de usuario.
Página
19
Nro. De historia Titulo
001 Gestionar Cliente
Descripción
Permite el registro de los datos personales de un cliente en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta
Criterios de aceptación
* El código del cliente se genera de manera automática, y debe ser único para cada cliente.
* Un cliente puede solicitar varios tipos de aceites.
* Sólo se podrá eliminar a un cliente si no tiene asociado ningún producto adquirido.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario
con un título en la parte superior del formulario.
Responsable Alejandra Perez Glasinovic
Adjunto
Página
20
Nro. De historia Titulo
002 Gestionar Empleado
Descripción
Permite el registro de los datos personales de un empleado en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta
Criterios de aceptación
* El código del empleado se genera de manera automática, y debe ser único para cada empleado.
* Un empleado puede registrar varias notas de compra o ventas.
* Sólo se podrá eliminar a un empleado si no tiene asociado ninguna transacción.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con
un título en la parte superior del formulario.
Página
21
Nro. De historia Titulo
003 Gestionar Proveedor
Descripción
Permite el registro de los datos de un proveedor en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta
Criterios de aceptación
* El código del proveedor se genera de manera automática, y debe ser único para cada proveedor.
* Un proveedor puede proporcionar varios tipos de aceites.
* Sólo se podrá eliminar a un proveedor si no tiene asociado ningún producto vendido.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con un
título en la parte superior del formulario.
Página
22
Nro. De historia Titulo
004 Gestionar Marca
Descripción
Permite el registro de las diferentes marcas de productos en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta
Criterios de aceptación
* El código de la marca se genera de manera automática, y debe ser único para cada marca.
* Una marca puede tener diferentes productos.
* Sólo se podrá eliminar a una marca si no tiene asociado ningún producto.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con un
título en la parte superior del formulario.
Página
23
Nro. De historia Titulo
005 Gestionar Producto
Descripción
Permite el registro de los datos de un producto en el sistema.
Estimación(HP) Prioridad Dependiente
24 Alta 004
Criterios de aceptación
Página
24
Nro. De historia Titulo
006 Gestionar Ventas
Descripción
Permite el registro de la venta así como el detalle de ésta en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta 001, 002
Criterios de aceptación
* El código de la venta se genera de manera automática, y debe ser único para cada venta.
* El formulario de registro de la nota de venta debe registrar: el cliente, el empleado que realiza la venta, los productos a
vender, fecha y el importe de la venta.
* El sistema debe validar los datos ingresados de la nota venta, antes de guardarlos.
* Sólo se podrá modificar y eliminar una nota de venta si no tiene asociado ninguna transacción en otra tabla y según el
tipo de usuario que tenga privilegios.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con un
título en la parte superior del formulario.
Responsable Alejandra Perez Glasinovic
Adjunto
Página
25
Nro. De historia Titulo
007 Gestionar Compras
Descripción
Permite el registro de las compras a un proveedor en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta 002, 003
Criterios de aceptación
* El código de la compra se genera de manera automática, y debe ser único para cada compra.
* El formulario de registro de la nota de compra debe registrar: el proveedor, el empleado que realiza la compra, los
productos a comprar, fecha y el costo de la compra.
* El sistema debe validar los datos ingresados de la nota compra, antes de guardarlos.
* Sólo se podrá modificar y eliminar una nota de compra si no tiene asociado ninguna transacción en otra tabla y según el
tipo de usuario que tenga privilegios.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con un
título en la parte superior del formulario.
Responsable Alejandra Perez Glasinovic
Adjunto
Página
26
Nro. De historia Titulo
008 Gestionar Almacén
Descripción
Permite el registro de los de un almacén en el sistema.
Estimación(HP) Prioridad Dependiente de
24 Alta
Criterios de aceptación
Página
27
Nro. De historia Titulo
009 Gestionar Ajustes
Descripción
Permite el registro de cambios que o ajustes que realice en torno a la entrada o salida de un producto.
Estimación(HP) Prioridad Dependiente de
24 Alta 002,005,008
Criterios de aceptación
* El código de ajustes se genera de manera automática, y debe ser único para cada compra.
* El formulario de ajustes registrar: el empleado que realiza el ajuste, la descripción de que se ajuste se realiza, los
productos que se ingresa o retira y la fecha del ajuste.
* El sistema debe validar los datos ingresados el formulario ajustes, antes de guardarlos.
* Sólo se podrá modificar y eliminar un ajustes si no tiene asociado ninguna transacción en otra tabla y según el tipo de
usuario que tenga privilegios.
* Para Realizar cualquier operación de nuevo modificar, guardar o buscar, etc. se mostrara el estado del formulario con un
título en la parte superior del formulario.
Responsable Rainer Jose Sejas Lino
Adjunto
Página
28
CAPÍTULO IV: DISEÑO
Página
29
Gráfico 4.1. Arquitectura de la solución
Fuente: Elaboración propia
Página
30
A continuación se hace una breve descripción de los distintos componentes que forman
parte de la solución en general.
Página
31
una aplicación por capas, de este modo, cada grupo de trabajo está totalmente abstraído del resto
de niveles.
En el diseño de sistemas informáticos actual se suele usar la arquitectura Programación por capas.
En dicha arquitectura a cada capa se le confía una misión simple, lo que permite el diseño de
arquitecturas escalable (que pueden ampliarse con facilidad en caso de que las necesidades
aumenten).
4.5. ADO.NET
Los proveedores de acceso a datos ADO.NET (conocidos como “Managed Data Providers”),
representan conjuntos específicos de clases que permiten conectarse e interactuar con una base
de datos, cada uno utilizando un protocolo particular.
ADO.NET provee una arquitectura extensible, posibilitando que terceras partes creen sus propios
proveedores de acceso nativo para aplicaciones .NET.
Página
32
4.5.1. Diagrama conceptual de la base de datos
Empleado
+ id_empleado: int
Ajuste + CI_empleado: int Nota De Compra Proveedor
- Id_Ajust : int
1..* 1 + Nombre: varchar - Id_NotaC: int - Id_proveedor: int
+ Descripcion: varchar + Paterno : varchar 1 1..* + Fecha: Date 1..* 1 + Nombre: varchar
Cliente + Materno: varchar
+ Fecha: Date + Total: float + Telefono: varchar
- id_cliente: int + Direccion: varchar + Direccion: varchar
1..*
+ CI_cliente: int + Telefono: varchar 1..*
+ Nombre: varchar + Cargo: varchar
+ Paterno: varchar 1
+ Materno: Varchar
1
+ Telefono: varchar 1..*
+ NIT: varchar
1..* Nota De Venta
+ Direccion: varchar
Factura - Id_NotaV: int
- Id_factura: int 1 + Fecha: Date Detalle_Compra
+ Total: float
+ Fecha: Date 0..1 + Costo: Float
+ Total: Float 1..*
+ Cantidad: int
+ NIT_empresa: varchar
+ NIT_cliente: int
Detale_Venta
+ Cantidad: int
Detalle_Ajuste
+ cantidad: int
1..*
Producto_Almacen
1..*
+ Stock: int 1..*
1..*
Precio
- Id_Precio: int
+ Precio: Float
+ Fecha: Date
Página
33
Cliente
CI_cliente Nombre Paterno Materno Teléfono NIT Dirección
PK
Proveedor
Id_proveedor Nombre Teléfono dirección
PK
Empleado
CI_empleado Nombre Paterno Materno Dirección Teléfono Cargo
PK
NotaVenta
Id_NotaV Fecha Total CI_empleado CI_cliente
PK FK FK
Factura
Id_Factura Fecha Total NIT_empresa NIT_cliente ID_NotaV
PK FK
NotaVenta
Id_NotaC Fecha Total CI_empleado Id_proveedor
PK FK FK
Marca
Id_Marca Nombre Unidad_Medida
PK
Producto
Id_producto Nombre_pro Precio Id_Marca
PK FK
Precio
Id_precio Id_producto Precio Fecha
PK PK, FK
Almacén
Nro_almacen Nombre Dirección
PK
Producto_almacen
Nro_almacen Id_producto stock
PK, FK PK, FK
Ajustes
Página
34
Id_ajuste Descripción Fecha CI_empleado
PK FK
Detalle_Compra
Id_NotaC Nro_almacen Id_producto Cantidad
PK, FK PK, FK PK, FK
Detalle_Venta
Id_NotaV Nro_almacen Id_producto Cantidad
PK, FK PK, FK PK, FK
Detalle_ajuste
Id_Ajuste Nro_almacen Id_producto Cantidad
PK, FK PK, FK PK, FK
Página
35
telefono varchar(30) not null,
cargo varchar(30) not null
)
Página
36
)
Página
37
cantidad int not null,
constraint fk_producto_almacen_id_pro foreign key (nro_almacen,id_producto) references
producto_almacen(nro_almacen,id_producto),
constraint fk_compra_id_c foreign key (ID_NotaC) references NotaCompra(ID_NotaC)
)
log on
(
name=bdproyecto_log,
filename='d:\Sistema\bdproyecto.ldf',
Página
38
size=5 mb,
maxsize=unlimited,
filegrowth=10 %
)
--proveedor
create procedure insertar_proveedor
@id_proveedor int,
@nombre varchar (30),
@telefono varchar (30),
@direccion varchar (30)
as
begin
Página
39
insert into proveedor(id_proveedor,nombre,telefono,direccion)
values (@id_proveedor,@nombre,@telefono,@direccion);
end
--empleado
create procedure insertar_empleado
@CI_empleado int,
@nombre varchar (30),
@paterno varchar (30),
@materno varchar (30),
@direccion varchar (30),
@telefono varchar(30),
@cargo varchar(30)
as
begin
insert into
empleado(CI_empleado,nombre,paterno,materno,direccion,telefono,cargo)
values
(@CI_empleado,@nombre,@paterno,@materno,@telefono,@direccion,@cargo);
end
Página
40
CREATE PROCEDURE eliminar_empleado
@ci_empleado int
AS
if exists(select *from empleado where CI_empleado=@ci_empleado) and
not exists(select *from NotaCompra,NotaVenta,ajuste where
NotaCompra.CI_empleado=@ci_empleado and NotaVenta.CI_empleado=@ci_empleado and
ajuste.CI_empleado=@ci_empleado)
BEGIN
delete from empleado where CI_empleado=@ci_empleado
END
Página
41
@id_fac int,
@fecha date,
@total float,
@id_notaV int
as
begin
update factura set
fecha=@fecha,total=@total,ID_NotaV=@id_notaV
where (ID_Factura=@id_fac);
end
--notaC
create proc guardar_NotaCompra
@fecha date,
@total float,
@ci_empl int,
@id_prov int
as
BEGIN
insert into NotaCompra(fecha,total,CI_empleado,Id_proveedor)
values (@fecha,@total,@ci_empl,@id_prov);
end
Página
42
BEGIN
insert into marca(id_marca,nombre,Unidad_medida)
values (@id_marca,@nombre,@Unidad_medida);
end
--producto
create proc guardar_producto
@id_prod int,
@nombre_p varchar(30),
@precio float,
@id_marca int
as
BEGIN
insert into Producto(Id_producto,nombre_pro,precio,id_marca)
values (@id_prod,@nombre_p,@precio,@id_marca);
end
Página
43
END
---Precio
create proc guardar_precio
@id_precio int,
@id_producto int,
@precio float,
@fecha date
as
BEGIN
insert into precio(Id_precio,Id_producto,precio,fecha)
values (@id_precio,@id_producto,@precio,@fecha);
end
Página
44
AS
if exists(select *from almacen where nro_almacen=@nro_almacen)
BEGIN
delete from almacen where nro_almacen=@nro_almacen
END
--prod_almacen
create proc guardar_producto_almacen
@nro_almacen int,
@id_producto int,
@stock int
as
BEGIN
insert into producto_almacen(nro_almacen,id_producto,stock)
values (@nro_almacen,@id_producto,@stock);
end
--ajustes
create proc guardar_ajustes
@descripcion varchar(90),
@fecha date,
@ci_empleado int
as
BEGIN
insert into ajuste(descripcion,fecha,CI_empleado)
values (@descripcion,@fecha,@ci_empleado);
end
Página
45
descripcion=@descripcion,fecha=@fecha,CI_empleado=@ci_empleado
where (Id_ajuste=@id_ajuste);
end
Página
46
select @id_ven= Max(id_NotaV) from NotaVenta
insert into detalle_venta values(@id_ven,@nro_almacen,@id_producto,@cantidad)
--Permite actualizar los stock de los productos del detalle de ventas
update producto_almacen set stock=stock - @cantidad where
id_producto=@id_producto
end;
Página
47
if exists(select *from Detalle_Ajuste where Id_ajuste=@id_ajuste)
BEGIN
delete from Detalle_Ajuste where Id_ajuste=@id_ajuste
END
Página
48
Tabla 4.2. Implementación de un Job para Backus
Fuente: Elaboración propia
Este job ejecuta un backup incremental cada día de la semana, a las 12:00 pm.
CAPÍTULO V: IMPLEMENTACIÓN
Página
49
5.1. APLICACIÓN ESCRITORIO (Código Fuente)
Clase Cliente
public Cliente()
{
ci_cliente = 0;
nombre = paterno = materno = telefono = NIT = direccion =
string.Empty;//=== " "es igual a vacio
}
public int CI_Cliente
{
get { return this.ci_cliente; }
set { this.ci_cliente = value; }
}
public string Nombre
{
get { return this.nombre; }
set { this.nombre = value; }
}
public string Paterno
{
get { return this.paterno; }
set { this.paterno = value; }
}
public string Materno
{
get { return this.materno; }
set { this.materno = value; }
Página
50
}
Página
51
public void eliminar()
{
try
{
IniciarSP("eliminar_cliente");
AddParametro("@ci_cliente", ci_cliente.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al eliminar cliente:" + e.ToString());
}
}
public DataSet buscar()
{
string s;
s = "select * from cliente";
DataSet ds = new DataSet();
ejecutarSQL(s, "tc", ds);
return ds;
}
public DataSet buscarPorNombre(string criterio)
{
string s;
s = "select ci_cliente as CICliente,
Nombre,Paterno,Materno,Telefono,NIT,Direccion from cliente where nombre like'" +
criterio + "%'";
DataSet ds = new DataSet();
ejecutarSQL(s, "tc", ds);
return ds;
}
}
Formulario Cliente
Página
52
txttelefono.Text = "";
txtNIT.Text = "";
txtDireccion.Text = "";
}
Página
53
c.modificar();
}
Clase Empleado
Página
54
public string Telefono
{
get { return this.telefono; }
set { this.telefono = value; }
}
Página
55
AddParametro("@ci_empleado", ci.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al eliminar el empleado:" + e.ToString());
}
}
public DataSet buscar()
{
string s;
s = "select ci_empleado,nombre,paterno,materno from empleado";
DataSet ds = new DataSet();
ejecutarSQL(s, "tc", ds);
return ds;
}
Formulario Empleado
Página
56
txtnombre.Text = dgEmpleado [1, e.RowIndex].Value.ToString().Trim();
txtpaterno.Text = dgEmpleado[2, e.RowIndex].Value.ToString().Trim();
txtmaterno.Text = dgEmpleado[3, e.RowIndex].Value.ToString().Trim();
txtdireccion.Text = dgEmpleado[4, e.RowIndex].Value.ToString().Trim();
txttelefono.Text = dgEmpleado [5, e.RowIndex].Value.ToString().Trim();
txtcargo.Text = dgEmpleado[6, e.RowIndex].Value.ToString().Trim();
}
Página
57
txtdireccion.Text = "";
}
}
Clase Proveedor
public Proveedor()
{
id_proveedor = 0;
nombre = direccion = telefono = string.Empty;
}
public int Id_Proveedor
{
get { return this.id_proveedor; }
set { this.id_proveedor = value; }
}
Página
58
{
MessageBox.Show("Error al insertar proveedor:" + e.ToString());
}
}
Formulario Proveedor
Página
59
public frmProveedor()
{
InitializeComponent();
}
Página
60
}
}
Clase Marca
public Marca()
{
id_marca = 0;
nombre = unidad_medida = string.Empty;
}
public int Id_Marca
{
get { return this.id_marca; }
set { this.id_marca = value; }
}
public string Nombre
{
get { return this.nombre; }
set { this.nombre = value; }
}
public string Unidad_Medida
{
get { return this.unidad_medida; }
set { this.unidad_medida = value; }
}
Página
61
AddParametro("@unidad_medida", unidad_medida);
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al modificar marca:" + e.ToString());
}
}
Formulario Marca
Página
62
p.guardar();
}
Clase Producto
Página
63
public class Producto : Conexion
{
private int id_producto;
private string nombre;
private float precio;
private int id_marca;
public Producto()
{
id_producto = 0;
nombre = string.Empty;
precio = 0;
id_marca = 0;
}
public int Id_Producto
{
get { return this.id_producto; }
set { this.id_producto = value; }
}
public string Nombre
{
get { return this.nombre; }
set { this.nombre = value; }
}
public float Precio
{
get { return this.precio; }
set { this.precio = value; }
}
Página
64
AddParametro("@id_prod", id_producto.ToString());
AddParametro("@nombre_p", nombre);
AddParametro("@precio", precio.ToString());
AddParametro("@id_marca", id_marca.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al modificar producto:" + e.ToString());
}
}
Formulario Producto
Página
65
pa.guardar();
}
Página
66
{
Precio pr = new Precio();
pr.Id_Precio = int.Parse(txtid_precio.Text);
pr.Id_producto = int.Parse(txtid_producto_prec.Text);
pr.N_Precio = int.Parse(txtnuevoprecio.Text);
pr.Fecha = dtpFechaprecio.Value;
pr.guardar();
}
Página
67
private void button13_Click(object sender, EventArgs e)
{
frmBuscarProducto fbp = new frmBuscarProducto();
fbp.ShowDialog();
txtid_producto_prec.Text = fbp.id_prod;
}
}
Clase almacén
public Almacen()
{
nro_almacen = 0;
nombre = direccion = string.Empty;
}
Página
68
}
Formulario almacén
Página
69
}
Clase almacén
public Venta()
{
Página
70
id_notaV = 0;
fecha = DateTime.Today.Date;
total = 0;
ci_cliente = 0;
ci_empleado = 0;
}
public int Id_Venta
{
get { return this.id_notaV; }
set { this.id_notaV = value; }
}
public DateTime Fecha
{
get { return this.fecha; }
set { this.fecha = value; }
}
Página
71
AddParametro("@id_notaV", id_notaV.ToString());
AddParametro("@fecha", fecha.ToShortDateString());
AddParametro("@total", total.ToString());
AddParametro("@ci_cli", ci_cliente.ToString());
AddParametro("@ci_empl", ci_empleado.ToString());
ejecutarSP();
}
catch (Exception e)
{
MessageBox.Show("Error al modificar venta:" + e.ToString());
}
}
Formulario venta
Página
72
v.Ci_Empleado = int.Parse(cboEmpleado.Text);
v.Guardar();
DetalleVenta dt = new DetalleVenta();
dt.Guardar(dgDetalle);
}
Página
73
{
MessageBox.Show("Error inserte producto:" + e.ToString());
}
}
void ListarEmpleado()
{
Empleado e = new Empleado();
DataSet ds = new DataSet();
ds = e.buscar();
foreach (DataRow reg in ds.Tables[0].Rows)
cboEmpleado.Items.Add(reg[0].ToString().Trim());
}
private void frmVenta_Load(object sender, EventArgs e)
{
ListarEmpleado();
}
Página
74
Gráfico 4.1. Modelo de despliegue
Fuente: Elaboración propia
Página
75
CAPÍTULO VI: PRUEBAS
Página
76
5.1. Pruebas de Software
TEST CASE
Identificador: 001
Título: Probar el registro de los clientes correctamente
Descripción: Seleccionar el botón Guardar y el sistema guardar los datos, así también debe auto-generar
el identificador del cliente.
Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de los clientes y seleccionar nuevo cliente
3. Digite los datos del cliente
4. Modificar y Eliminar Los datos del cliente
5. Consultar los datos del cliente a través de las búsquedas por parámetro
Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca un cliente
Automatizado No
Autor Edwin Calle
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones
Tabla 5.1. Test Case Probar que guarde bien los clientes
Fuente: Elaboración propia
Página
77
5.1. Pruebas de Software
TEST CASE
Identificador: 001
Título: Probar el registro de los clientes correctamente
Descripción: Seleccionar el botón Guardar y el sistema guardar los datos, así también debe auto-generar
el identificador del cliente.
Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de los clientes y seleccionar nuevo cliente
3. Digite los datos del cliente
4. Modificar y Eliminar Los datos del cliente
5. Consultar los datos del cliente a través de las búsquedas por parámetro
Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca un cliente
Automatizado No
Autor Edwin Calle
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones
Tabla 5.1. Test Case Probar que guarde bien los clientes
Fuente: Elaboración propia
Página
78
5.1. Pruebas de Software
TEST CASE
Identificador: 001
Título: Probar el registro de los clientes correctamente
Descripción: Seleccionar el botón Guardar y el sistema guardar los datos, así también debe auto-generar
el identificador del cliente.
Pasos
1. Ejecutar la aplicación
2. Ingresar al menú de los clientes y seleccionar nuevo cliente
3. Digite los datos del cliente
4. Modificar y Eliminar Los datos del cliente
5. Consultar los datos del cliente a través de las búsquedas por parámetro
Resultado Esperado
Deberá verificar si guarda, modifica, elimina y busca un cliente
Automatizado No
Autor Edwin Calle
cuando se ejecutan
Resultado Actual
Comentarios/Observaciones
Tabla 5.1. Test Case Probar que guarde bien los clientes
Fuente: Elaboración propia
Página
79