Você está na página 1de 9

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar

AVANCES DEL PROYECTO

BASE DE DATOS DE PAPELERIA


Objetivo:
Brindar un mejor servicio al cliente: teniendo control sobre la existencia de cada artculo, proporcionando rapidez cuando sea solicitada una factura y controlando las ventas totales.

Deficiencias actuales:
No siempre se sabe que artculos hacen falta y por lo tanto no son solicitados al proveedor causando baja de ventas y prdida de clientes. Cuando una factura es solicitada se tiene que pedir con tiempo de anticipacin. No se lleva un control de caja ni anotacin de las ventas. El personal no conoce el precio de todos los productos. Algunas veces al cobrar hay errores en las cuentas. En ciertas ocasiones el vendedor no sabe si aplicar descuento en los artculos que el cliente se lleva. Al hacer alguna devolucin, no se lleva el control de las devoluciones.

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar

Que se piensa hacer para resolverlo:


Tener un control sobre la existencia de cada producto y actualizarla automticamente cada vez que se haga una venta. Se tenga la relacin de todas las ventas con su factura, independientemente si el cliente la pide o no. Cada que se requiera, se pueda tener a la mano la cantidad de dinero que se vendi por da. Con solo ingresar el id del producto se pueda saber su precio. Cada que se haga una venta de varios productos, automticamente se conozca el total de dicha venta sin tener que estar haciendo cuentas. Si el producto se encuentra en oferta o el descuento es mayor al total de la compra el descuento no aplica

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar

MODELO ENTIDAD - RELACION


IdProvedor Nombre Telefono Direccion

PROVEEDOR

IdProducto Existencias Descripcion

PRODUCTO
PrecioCompra PrecioVenta

IdCliente IdProducto IdVenta

venta DetalleVenta
Fecha IdVenta Cantidad Descuento Rfc

CLIENTE
Direccion Nombre Id_Cliente Telefono

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar

MODELO RELACIONAL
Proveedor IdProveedor Nombre Telfono Direccin Cliente IdCliente Nombre Telfono Direccin Descuento Rfc

Producto IdProducto Descripcin PrecioCompra PrecioVenta Existencias

ProveedorProducto IdProveedor IdProducto

DetalleVenta IdVenta Id_Producto CantidadProd

Venta IdVenta IdCliente Fecha

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar

DDL
create database papeleria use papeleria create table Proveedor ( IdProveedor char (5) check(IdProveedor like '[0-9][0-9][0-9][0-9][0-9]') constraint IdInvalido primary key, empresa varchar (50) not null, telefono char (10) check(telefono like '[0-9][0-9][0-9][0-9][0-9][09][0-9][0-9][0-9][0-9]') not null, direccion varchar (70) null, nombreContacto varchar (40) not null, telContacto char (10) check(telContacto like '[0-9][0-9][0-9][0-9][09][0-9][0-9][0-9][0-9][0-9]') not null, ) create table Producto ( IdProducto char (6) check(IdProducto like '[A-Z][A-Z][0-9][0-9][0-9][0-9]') constraint IdProductoInvalido primary key, descripcion varchar (40) not null, precioVenta money not null, existencias int check(existencias>=0) not null ) create table Cliente ( IdCliente char (5) check(IdCliente like '[0-9][0-9][0-9][0-9][0-9]') constraint IdClienteInvalido primary key, nombre varchar (20) not null, telefono char (10) check(telefono like '[0-9][0-9][0-9][0-9][0-9][0-9][09][0-9][0-9][0-9]') null, direccion varchar (70) null, descuento tinyint check(descuento between 0 and 50) default 0, rfc char (10) null constraint RFCDuplicado unique check (rfc like '[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9][09][0-9][0-9]') ) create table Compra ( IdCompra int check(idCompra>=0) not null, IdCliente char (5) not null foreign key references Cliente(IdCliente), fecha date not null,

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar primary key (IdCompra) ) create table DetalleCompra ( IdCompra int check (idCompra>=0) references Compra(IdCompra), IdProducto char (6) not null foreign key references Producto(IdProducto), cantidadProd int check (cantidadProd > 0) not null, precioCompra money check(precioCompra >0)not null ) alter table DetalleCompra add subtotal as(cantidadProd*precioCompra) create table Venta ( IdVenta int check( idVenta>=0) primary key, IdCliente char (5) not null foreign key references Cliente(IdCliente), fecha date not null, devolucion char(1) check(devolucion in('N', 'S')) ) create table DetalleVenta ( IdVenta int check (idVenta>=0) references Venta(IdVenta), IdProducto char (6) not null foreign key references Producto(IdProducto), cantidadProd int check (cantidadProd > 0) not null, subtotal money check(subtotal >0)not null, devolucion char(1) check(devolucion in('N', 'S')) )

Procedimientos y Transacciones:
create proc ventaDeProductos

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar @IdCliente char (5), @IdProducto char (6), @cantidad int, @devolucion char(1) as begin try begin transaction declare @idVenta int if(@cantidad<=0) print 'No se permiten cantidades negativas' else begin tran select @idVenta = MAX(IdVenta) from venta if(@idVenta is null) set @idVenta=0 insert into venta values (@idVenta+1, @IdCliente, GETDATE()) update producto set existencias = existencias - @cantidad where idProducto like @IdProducto declare @precio money declare @subtotal money declare @total money declare @descCliente tinyint declare @descTotal money select @precio = precioVenta from producto where idproducto like @IdProducto select @descCliente = descuento from cliente where idCliente like @IdCliente set @subtotal = @precio * @cantidad set @descTotal = (@precio * @cantidad)*(@descCliente/100) set @total = @subtotal - @descTotal if(@devolucion = 'S') insert into detalle values (@idVenta+1, @IdProducto, @cantidad, @total,@devolucion) else insert into detalle values (@idVenta+1, @IdProducto, @cantidad,@total, 'N') commit tran end try begin catch print 'Ha ocurrido un error' rollback end catch

create proc devolucionArticulo @IdVenta int, @cantidadDevuelta int as begin try

Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar begin transaction declare @sePuede char(1) select @sePuede = permiteDevolucion from detalle where IdVenta like @IdVenta if(@sePuede = 'N') print 'Esa venta no admite devoluciones...' else declare @cantidadVendida int select @cantidadVendida = cantidad from detalle where IdVenta like @IdVenta if(@cantidadVendida<@cantidadDevuelta) print 'La cantidad vendida es menor a la devuelta!!!' else declare @precio money declare @descontar money declare @IdProducto char(6) select @precio = precioVenta from producto where idproducto like @IdProducto set @descontar = @precio * @cantidadDevuelta select @IdProducto = idProducto from detalle where IdVenta like @IdVenta update producto set existencias = existencias + @cantidadDevuelta where idProducto like @IdProducto update detalle set total = total - @descontar where IdVenta like @IdVenta commit tran end try begin catch print 'error en devolucion!!!' rollback end catch

Você também pode gostar