Sei sulla pagina 1di 17

Universidad Nacional Del Centro Del Per

Facultad De Ingeniera De Sistemas

rea Tema :

: INGENIERIA DE SOFTWARE
Anlisis y diseo de una aplicacin control de ventas de El Valle
Carbajal Carbajal, Ismael Paucar De la Cruz, Walter De la Cruz Ramos, Benjamin Junior Rojas Casapia, Wilder Raul Soto Mallqui, Edson Junior

Integrantes

Semestre Docente

: :

Octavo
Mg. Ruchard Mercado Rivas

Ao Acadmico 2013 I

Aspectos Generales

Nombre del Proyecto de Base de Datos. Anlisis y diseo de una aplicacin control de ventas de El Valle

Visin del Proyecto

Hoy en da con el avance de la tecnologa informtica, implementada en las empresas donde los sistemas informticos forman parte importante en la eficacia y eficiencia del funcionamiento de toda empresa, poder realizar esta nueva adaptacin informtica en una empresa familiar en desarrollo abre las puertas hacia una nueva forma de gestin, adems supone ahorro de dinero, trabajo y mayor organizacin dejando de lado el sistema de registro manual por archivos que conlleva mayor probabilidad de equivocaciones. Este nuevo sistema en implementacin permitir entrar en una nueva etapa permitiendo avanzar hacia una nueva forma de trabajo.
Objetivos del Proyecto.

Objetivo General El objetivo general es el de realizar un Trabajo de anlisis y diseo para un sistema de control de ventas, en la que los administrativos y dems personal podrn controlar pedidos de su cartera de clientes con mayor facilidad. Objetivos Especficos Entre los objetivos especficos est el mejorar el manejo de las diferentes reas, especficamente de ventas para una mejor gestin de sus diferentes reas del departamento administrativo de la empresa. Los objetivos se dividirn en los siguientes puntos: Especificacin y anlisis de requerimientos: Descripcin del proceso, en trminos muy generales del funcionamiento del software. Identificacin de los subsistemas que formaran parte del software. Descripcin precisa de las funcionalidades de cada subsistema por separado. Resumen software. esquemtico de todas las funcionalidades del

Glosario de las entidades y principales actores del software. Los casos de uso. Diseo: Establecer relaciones de los subsistemas.

Diseo de la interfaz grfica de usuario del software Control de Ventas.

Modelamiento de la Base de Datos


Enunciado

del caso a desarrollar.

El sistema de informacin Control de Ventas pretende ser un sistema informtico mediante el cual se puedan gestionar Ventas. La aplicacin est compuesta un programa, que estn ejecutados en un ordenador. El ordenador estarn conectados en red (local), ambos contarn con la misma prioridad sobre el sistema, el ordenador central donde se almacena los datos ser el de administracin.
Modelo

Lgico.

Relaciones

Restricciones

e Integridad referencial

La base de datos es controlada por el login del usuario, con su respectiva contrasea donde cada usuario es limitado el acceso a los datos y funciones.
Operaciones

en su modelo

Cada accin se realiza mediante procesos almacenados para: Lista temporal de ventas. Reporte ventas

Login de usuario Venta Permisos de usuario. Creacin de usuario.

Implementacin de la Base de Datos Implementacin a travs de un Manejador de base de Datos . Se implement en SQL Server.

USE [master] GO /****** Object: Database [pventa] Script Date: 24/07/2013 10:23:32 ******/ CREATE DATABASE [pventa] CONTAINMENT = NONE ON PRIMARY ( NAME = N'pventa', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.BENJAMIN\MSSQL\DATA\pventa.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'pventa_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.BENJAMIN\MSSQL\DATA\pventa_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO ALTER DATABASE [pventa] SET COMPATIBILITY_LEVEL = 110 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [pventa].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [pventa] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [pventa] SET ANSI_NULLS OFF GO ALTER DATABASE [pventa] SET ANSI_PADDING OFF GO ALTER DATABASE [pventa] SET ANSI_WARNINGS OFF GO ALTER DATABASE [pventa] SET ARITHABORT OFF GO ALTER DATABASE [pventa] SET AUTO_CLOSE OFF GO ALTER DATABASE [pventa] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [pventa] SET AUTO_SHRINK OFF

GO ALTER DATABASE [pventa] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [pventa] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [pventa] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [pventa] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [pventa] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [pventa] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [pventa] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [pventa] SET DISABLE_BROKER GO ALTER DATABASE [pventa] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [pventa] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [pventa] SET TRUSTWORTHY OFF GO ALTER DATABASE [pventa] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [pventa] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [pventa] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [pventa] SET HONOR_BROKER_PRIORITY OFF GO ALTER DATABASE [pventa] SET RECOVERY FULL GO ALTER DATABASE [pventa] SET MULTI_USER GO ALTER DATABASE [pventa] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [pventa] SET DB_CHAINING OFF GO ALTER DATABASE [pventa] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) GO ALTER DATABASE [pventa] SET TARGET_RECOVERY_TIME = 0 SECONDS

GO ALTER DATABASE [pventa] SET READ_WRITE GO

Implementacin

de la Base de Datos. Se crearon las tablas:

Implementacin

de estrategias de datos .

Se crearon las tablas

Tabla Producto
USE [pventa] GO /****** Object: Table [dbo].[productos] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[productos]( [id_producto] [nvarchar](50) NOT NULL, [producto] [nvarchar](250) NULL, [id_unidad_medida] [smallint] NULL, [p_compra] [float] NULL, [p_venta] [float] NULL, [existencia] [float] NULL, [unidad_medida] [nvarchar](150) NULL, CONSTRAINT [PK_productos] PRIMARY KEY CLUSTERED ( [id_producto] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[productos] WITH CHECK ADD CONSTRAINT [FK_productos_unidad_medida] FOREIGN KEY([id_unidad_medida]) REFERENCES [dbo].[unidad_medida] ([id_unidad_medida]) GO ALTER TABLE [dbo].[productos] CHECK CONSTRAINT [FK_productos_unidad_medida] GO Script Date: 24/07/2013 10:26:46 ******/

Tabla de Usuarios
USE [pventa] GO /****** Object: Table [dbo].[users] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[users]( [user_login] [nvarchar](50) NOT NULL, [user_password] [nvarchar](250) NULL, [nombre] [nvarchar](150) NULL, [activo] [bit] NOT NULL, [ventas] [bit] NOT NULL, Script Date: 24/07/2013 10:28:15 ******/

[reportes] [bit] NOT NULL, [administrar] [bit] NOT NULL, [fecha_registro] [datetime] NOT NULL, CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ( [user_login] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[users] ADD CONSTRAINT [DF_users_fecha_registro] DEFAULT (getdate()) FOR [fecha_registro] GO Tabla de venta USE [pventa] GO /****** Object: Table [dbo].[venta] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[venta]( [id_venta] [int] IDENTITY(1,1) NOT NULL, [fecha_registro] [datetime] NOT NULL, [user_login] [nvarchar](50) NOT NULL, CONSTRAINT [PK_venta] PRIMARY KEY CLUSTERED ( [id_venta] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[venta] ADD CONSTRAINT [DF_venta_fecha_registro] DEFAULT (getdate()) FOR [fecha_registro] GO ALTER TABLE [dbo].[venta] WITH CHECK ADD CONSTRAINT [FK_venta_users] FOREIGN KEY([user_login]) REFERENCES [dbo].[users] ([user_login]) GO ALTER TABLE [dbo].[venta] CHECK CONSTRAINT [FK_venta_users] GO Tabla de Venta Detalle USE [pventa] GO /****** Object: Table [dbo].[venta_detalle] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Script Date: 24/07/2013 10:29:46 ******/ Script Date: 24/07/2013 10:29:11 ******/

CREATE TABLE [dbo].[venta_detalle]( [id_venta_detalle] [int] IDENTITY(1,1) NOT NULL, [user_login] [nvarchar](50) NOT NULL, [id_venta] [int] NOT NULL, [id_producto] [nvarchar](50) NOT NULL, [cantidad] [float] NOT NULL, [p_venta] [float] NOT NULL, CONSTRAINT [PK_venta_detalle] PRIMARY KEY CLUSTERED ( [id_venta_detalle] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[venta_detalle] WITH CHECK ADD CONSTRAINT [FK_venta_detalle_productos] FOREIGN KEY([id_producto]) REFERENCES [dbo].[productos] ([id_producto]) GO ALTER TABLE [dbo].[venta_detalle] CHECK CONSTRAINT [FK_venta_detalle_productos] GO ALTER TABLE [dbo].[venta_detalle] WITH CHECK ADD CONSTRAINT [FK_venta_detalle_venta] FOREIGN KEY([id_venta]) REFERENCES [dbo].[venta] ([id_venta]) GO ALTER TABLE [dbo].[venta_detalle] CHECK CONSTRAINT [FK_venta_detalle_venta] GO
Implementacin

de estrategias de datos

PROCEDIMIENTOS ALMACENADOS Lista temporal de ventas USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_LISTA_TEMP_VENTAS] 24/07/2013 10:31:28 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

Script Date:

ALTER PROCEDURE [dbo].[proc_LISTA_TEMP_VENTAS] @USER_LOGIN NVARCHAR(50) AS SELECT T.id_venta_detalle_tmp,P.id_producto, P.producto, T.cantidad, T.p_venta, (T.cantidad * T.p_venta) AS TOTAL FROM productos P JOIN venta_detalle_tmp T ON P.id_producto=T.id_producto JOIN unidad_medida M ON P.id_unidad_medida=M.id_unidad_medida WHERE T.user_login=@USER_LOGIN Lista de Reporte de Ventas USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_RPT_VENTAS] 10:32:28 ******/

Script Date: 24/07/2013

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[proc_RPT_VENTAS] @FECHA_INI DATETIME, @FECHA_FIN DATETIME AS SELECT V.id_venta,V.fecha_registro, P.id_producto,P.producto, D.cantidad,D.p_venta, D.cantidad*D.p_venta AS TOTAL FROM venta V JOIN venta_detalle D ON V.id_venta=V.id_venta JOIN productos P ON D.id_producto=P.id_producto WHERE V.fecha_registro BETWEEN @FECHA_INI AND @FECHA_FIN Lista Temporal de Ventas USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_TEMP_VENTAS] 24/07/2013 10:33:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

Script Date:

ALTER PROCEDURE [dbo].[proc_TEMP_VENTAS] @USER_LOGIN NVARCHAR(50), @ID_PRODUCTO NVARCHAR(50), @CANTIDAD FLOAT AS /*GRABAR TMEP_VENTAS*/ BEGIN TRANSACTION tVTA DECLARE @PRECIO FLOAT,@IVA FLOAT,@EXISTENCIA FLOAT,@CANT FLOAT, @PORC_DESC FLOAT SELECT @EXISTENCIA=EXISTENCIA FROM productos WHERE ID_PRODUCTO=@ID_PRODUCTO SET @PORC_DESC=0 SELECT TOP(1) @PRECIO = p_venta,@ID_PRODUCTO=ID_PRODUCTO FROM productos WHERE ID_PRODUCTO=@ID_PRODUCTO IF @PRECIO IS NULL GOTO ERROR_A IF EXISTS(SELECT ID_PRODUCTO FROM venta_detalle_tmp WHERE ID_PRODUCTO=@ID_PRODUCTO AND user_login=@USER_LOGIN) BEGIN --EDITAR SELECT @CANT = CANTIDAD FROM venta_detalle_tmp WHERE ID_PRODUCTO=@ID_PRODUCTO AND user_login=@USER_LOGIN IF(@CANTIDAD<=(@EXISTENCIA-@CANT)) BEGIN UPDATE venta_detalle_tmp SET CANTIDAD = CANTIDAD + @CANTIDAD WHERE user_login = @USER_LOGIN AND ID_PRODUCTO=@ID_PRODUCTO AND user_login=@USER_LOGIN END ELSE GOTO ERROR_EXIST END ELSE BEGIN --INSERTAR

IF(@CANTIDAD<=@EXISTENCIA) BEGIN INSERT INTO venta_detalle_tmp(user_login,ID_PRODUCTO,CANTIDAD,p_venta) VALUES(@USER_LOGIN,@ID_PRODUCTO,@CANTIDAD,@PRECIO) END ELSE GOTO ERROR_EXIST END IF @@ERROR<> 0 GOTO ERROR COMMIT TRANSACTION tVTA RETURN ERROR: RAISERROR('No se puede agregar el registro',16,1) ROLLBACK TRANSACTION tVTA GOTO FIN RETURN ERROR_A: RAISERROR('El articulo no existe',16,1) ROLLBACK TRANSACTION tVTA GOTO FIN RETURN ERROR_EXIST: RAISERROR('No hay suficientes existencias',16,1) ROLLBACK TRANSACTION tVTA GOTO FIN RETURN FIN: Usuarios USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_USERS] 10:35:13 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[proc_USERS] @USER_LOGIN NVARCHAR(50), @USER_PASSWORD VARCHAR(8000), @NOMBRE NVARCHAR(50), @ACTIVO BIT, @REPORTES BIT, @VENTAS BIT, @ADMINISTRAR BIT AS BEGIN TRANSACTION tUSERS IF NOT EXISTS(SELECT 1 FROM users WHERE user_login=@USER_LOGIN) BEGIN INSERT INTO USERS(USEr_LOGIN,USER_PASSWORD,NOMBRE,activo,reportes,ventas,administrar) VALUES(@USER_LOGIN,@USER_PASSWORD,@NOMBRE,@ACTIVO,@REPORTES,@VEN TAS,@ADMINISTRAR) END ELSE Script Date: 24/07/2013

BEGIN UPDATE USERS SET NOMBRE=@NOMBRE, activo=@ACTIVO, reportes=@REPORTES, ADMINISTRAR=@ADMINISTRAR, VENTAS=@VENTAS WHERE user_login=@USER_LOGIN END COMMIT TRANSACTION tUSERS RETURN ERROR: RAISERROR('No se puede ejecutar la accin solicitada',16,1) ROLLBACK TRANSACTION tUSERS GOTO FIN RETURN FIN: GO Permisos de Usuarios USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_USERS_PERMISOS_MOSTRAR] Date: 24/07/2013 10:36:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[proc_USERS_PERMISOS_MOSTRAR] @USER_LOGIN NVARCHAR(50) AS SELECT U.* FROM USERS U WHERE U.[USER_LOGIN]=@USER_LOGIN Ventas USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_VENTA] 10:38:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

Script

Script Date: 24/07/2013

ALTER PROCEDURE [dbo].[proc_VENTA] @USER_LOGIN NVARCHAR(50) AS BEGIN TRANSACTION tVTAs DECLARE @FOLIO_VENTA INT IF NOT EXISTS(SELECT ID_PRODUCTO FROM venta_detalle_tmp WHERE user_login=@USER_LOGIN ) GOTO NOOPER --GRABAMOS LA VENTA INSERT INTO VENTA(user_login,fecha_registro) VALUES(@USER_LOGIN,GETDATE()) --OBTENEMOS EL FOLIO DE LA VENTA SELECT @FOLIO_VENTA=@@IDENTITY --INSERTAMOS EL DETALLE DE LA VENTA INSERT INTO VENTA_DETALLE(id_venta,ID_PRODUCTO,CANTIDAD,P_VENTA) SELECT @FOLIO_VENTA,ID_PRODUCTO,CANTIDAD,P_VENTA

FROM venta_detalle_tmp WHERE user_login=@USER_LOGIN --ACTUALIZAMOS LAS EXISTENCIAS GENERALES UPDATE productos SET productos.EXISTENCIA = productos.EXISTENCIA-venta_detalle_tmp.[CANTIDAD] FROM venta_detalle_tmp WHERE productos.ID_PRODUCTO = venta_detalle_tmp.ID_PRODUCTO AND venta_detalle_tmp.user_login= @USER_LOGIN --BORRAMOS LA TABLA TEMPORAL DELETE FROM venta_detalle_tmp WHERE user_login = @USER_LOGIN IF @@ERROR <> 0 GOTO ERROR SELECT @FOLIO_VENTA COMMIT TRANSACTION tVTAs RETURN ERROR: RAISERROR('No se puede grabar la venta',16,1) ROLLBACK TRANSACTION tVTAs GOTO FIN RETURN NOOPER: RAISERROR('No hay registros en la lista de ventas',16,1) ROLLBACK TRANSACTION tVTAs GOTO FIN RETURN FIN:

Plataforma

de software que interacte con la base de datos.

Acceso de Usuarios

Inicio

Ventas

Reportes

Reporte

Administrar

Nuevo Usuario

Potrebbero piacerti anche