Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (31-41) Tabla Venta
Buen día amigos, en este artículo implementaremos los procedimientos almacenados en sql server 2014 para poder dar mantenimiento a nuestra tabla venta junto con sus detalles de venta, Trabajaremos con triggers para poder actualizar el stock (disminuir el stock cuando se realice una venta, o aumentar el stock cuando se elimine la venta y sus detalles) dependiendo de las ventas realizadas.
Pueden descargar el paquete del proyecto desarrollado en el curso, la base de datos, los procedimientos almacenados y el sistema completo hasta el Video 41 desde:
Puedes descargar la versión completa del proyecto con todas las funcionalidades terminadas desde:
Pueden seguir el curso completo y aprender a desarrollar un Sistema de Ventas en Csharp.Net utilizando como IDE de desarrollo Visual Studio 2013 y como gestor de Base de datos SQL Server 2014 desde:
No se olviden siempre de Visitar mi canal www.youtube.com/jcarlosad7 para ver los nuevos cursos.
Procedimientos almacenados tabla Ingreso y Detalle_Ingreso
--Procedimientos almacenados
--Procedimiento Mostrar Venta
create proc
spmostrar_venta
as
SELECT
top 100 v.idventa,
(t.apellidos +' '+ t.nombre) as Trabajador,
(c.apellidos + ' ' + c.nombre) as Cliente,
v.fecha, v.tipo_comprobante,
v.serie, v.correlativo,
v.estado, sum((d.precio_venta*
d.cantidad)-d.descuento) as Total
FROM detalle_venta d INNER JOIN venta v
ON d.idventa = v.idventa
INNER JOIN cliente c
ON v.idcliente = c.idcliente
INNER JOIN trabajador t
ON v.idtrabajador = t.idtrabajador
group by
v.idventa,
t.apellidos +' '+ t.nombre,
c.apellidos+' '+c.nombre,
v.fecha, v.tipo_comprobante,
v.serie, v.correlativo,
v.estado
order
by v.idventa desc
go
-- Procedimiento Buscar venta por fecha
create proc
spbuscar_venta_fecha
@textobuscar varchar(50),
@textobuscar2 varchar(50)
as
SELECT v.idventa,
(t.apellidos +' '+ t.nombre) as Trabajador,
(c.apellidos + ' ' + c.nombre) as Cliente,
v.fecha, v.tipo_comprobante,
v.serie, v.correlativo,
v.estado, sum((d.precio_venta*
d.cantidad)-d.descuento) as Total
FROM detalle_venta d INNER JOIN venta v
ON d.idventa = v.idventa
INNER JOIN cliente c
ON v.idcliente = c.idcliente
INNER JOIN trabajador t
ON v.idtrabajador = t.idtrabajador
group by
v.idventa,
t.apellidos +' '+ t.nombre,
c.apellidos+' '+c.nombre,
v.fecha, v.tipo_comprobante,
v.serie, v.correlativo,
v.estado
having
v.fecha>=@textobuscar
and v.fecha<=@textobuscar2
go
-- Procedimiento Insertar venta
create proc
spinsertar_venta
@idventa int=null output,
@idtrabajador
int,
@idcliente
int,
@fecha date,
@tipo_comprobante varchar(20),
@serie varchar(4),
@correlativo varchar(7),
@igv decimal(4,2),
@estado varchar(7)
as
insert into venta(idtrabajador,idcliente,fecha,tipo_comprobante,serie,correlativo,igv,estado)
values
(@idtrabajador,@idcliente,@fecha,@tipo_comprobante,@serie,@correlativo,@igv,@estado)
--Obteniendo el codigo autogenerado de
la venta
SET @idventa = @@IDENTITY
go
--Procedimiento eliminar venta
create
proc speliminar_venta
@idventa int
as
delete
from venta
where
idventa=@idventa
go
--Procedimiento Insertar detalles de
las ventas
create proc
spinsertar_detalle_venta
@iddetalle_venta
int output,
@idventa int,
@iddetalle_ingreso
int,
@cantidad
int,
@precio_venta
money,
@descuento money
as
insert into
detalle_venta (idventa,iddetalle_ingreso,cantidad,
precio_venta,descuento)
values
(@idventa,@iddetalle_ingreso,@cantidad,
@precio_venta,@descuento)
Go
--Disparador para restablecer stock
create
trigger sprestablecer_stock
on
[detalle_venta]
for
delete
as
Update di set di.stock_actual=di.stock_actual+dv.cantidad
from
detalle_ingreso as di inner
join
deleted as dv on di.iddetalle_ingreso=dv.iddetalle_ingreso
go
--Procedimiento almacenado para
disminuir stock
create proc
spdisminuir_stock
@iddetalle_ingreso
int,
@cantidad
int
as
update detalle_ingreso set
stock_actual=stock_actual-@cantidad
where iddetalle_ingreso=@iddetalle_ingreso
go
--mostrar detalle de las ventas
create proc
spmostrar_detalle_venta
@textobuscar
int
as
select d.iddetalle_ingreso,a.nombre as Articulo,
d.cantidad,d.precio_venta,d.descuento,
((d.precio_venta*d.cantidad)-d.descuento) as Subtotal
from detalle_venta d inner join detalle_ingreso di
on d.iddetalle_ingreso=di.iddetalle_ingreso
inner join articulo a
on di.idarticulo=a.idarticulo
where d.idventa=@textobuscar
go
--Mostrar Artículos para la venta por
nombre
create proc
spbuscararticulo_venta_nombre
@textobuscar
varchar(50)
as
select d.iddetalle_ingreso,a.Codigo,a.Nombre,c.nombre as Categoria,
p.nombre as Presentacion,d.stock_actual,d.precio_compra,
d.precio_venta,d.fecha_vencimiento
from
articulo a inner join
categoria c
on
a.idcategoria=c.idcategoria
inner
join presentacion p
on
a.idpresentacion =
p.idpresentacion
inner
join detalle_ingreso d
on
a.idarticulo=d.idarticulo
inner
join ingreso i
on
i.idingreso=d.idingreso
where
a.nombre like
@textobuscar + '%'
and
d.stock_actual>0
and
i.estado<>'ANULADO'
go
--Mostrar Artículos para la venta por
Código
create proc
spbuscararticulo_venta_codigo
@textobuscar
varchar(50)
as
select a.Idarticulo,a.Codigo,a.Nombre,c.nombre as Categoria,
p.nombre as Presentacion,d.stock_actual,d.precio_compra,
d.precio_venta,d.fecha_vencimiento
from
articulo a inner join
categoria c
on
a.idcategoria=c.idcategoria
inner
join presentacion p
on
a.idpresentacion =
p.idpresentacion
inner
join detalle_ingreso d
on
a.idarticulo=d.idarticulo
inner
join ingreso i
on
i.idingreso=d.idingreso
where
a.codigo=@textobuscar
and
d.stock_actual>0
and i.estado<>'ANULADO'
go
-- Procedimiento almacenado para
generar el reporte
create
proc spreporte_venta
@idventa int
as
SELECT v.idventa,
(t.apellidos +' '+ t.nombre) as Trabajador,
(c.apellidos + ' ' + c.nombre) as Cliente,
c.direccion,c.telefono,c.num_documento,
v.fecha, v.tipo_comprobante,
v.serie, v.correlativo,
v.estado,a.nombre,v.igv, d.precio_venta,d.cantidad,d.descuento
FROM detalle_venta d inner join detalle_ingreso di
on d.iddetalle_ingreso=di.iddetalle_ingreso
inner join articulo a
on di.idarticulo=a.idarticulo
INNER
JOIN venta v
ON
d.idventa = v.idventa
INNER
JOIN cliente c
ON
v.idcliente = c.idcliente
INNER JOIN trabajador t
ON v.idtrabajador = t.idtrabajador
where
v.idventa=@idventa
go`
Video 31: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (31-40) Tabla Venta
Saludos Imperio, un abrazo a la distancia!
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (31-41) Tabla Venta
Reviewed by IncanatoIt-ad
on
17:26
Rating:
Excelente Video Tutorial. Muchas Gracias por compartirlo.
ResponderEliminar