Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Ortiz Glvez Marisol Guadalupe Garca ngeles Aldo Arturo Glvez Garca Karina Porras Barrera Omar
PROVEEDOR
PRODUCTO
PrecioCompra PrecioVenta
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
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
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