Está en la página 1de 2

alter procedure sp_Inventario(@PP smallint)

as
begin
SET NOCOUNT ON
declare @Idp NUMERIC, @Cod varchar(20), @Nombre varchar(100)
declare @saldo NUMERIC, @pc numeric(18,2), @pr_prom numeric(18,2), @Total numeric(18,2)
create table #Datos (
codigo varchar(20), producto varchar(100), stock numeric, puc numeric(18,2),
ppp numeric(18,2), total numeric(18,2)
)
set @saldo=0
declare C_Prod Cursor for
select pk_id_producto, codigo, descripcion from in_productos
where estado='A' ORDER BY CODIGO
open C_Prod
fetch next from C_Prod into @Idp, @Cod, @Nombre
while @@fetch_Status <>-1
begin
--busca saldo de cada producto
select
@saldo=SUM(case when tipo=1 then CANTIDAD else (CANTIDAD * (-1)) end)
from VW_MOVIMIENTOS
where FK_ID_PRODUCTO=@Idp
--
set @saldo=ISNULL(@saldo,0)
--ltimo precio de compra
select top 1
@pc=(BASE_IMPONIBLE/CANTIDAD),
@pr_prom=ISNULL(pp,0)
from VW_MOVIMIENTOS
where FK_ID_PRODUCTO=@Idp and tipo=1
order by FECHA desc
--set
set @pc =ISNULL(@pc,0)
set @pr_prom =ISNULL(@pr_prom,0)
--cacula total
if @PP=1
set @Total=@saldo*@pr_prom
else
set @Total=@saldo*@pc

insert into #Datos (codigo , producto , stock , puc , ppp , total)


values (@Cod, @Nombre, @saldo, @pc, @pr_prom, @Total )

fetch next from C_Prod into @Idp, @Cod, @Nombre


end
close C_Prod
deallocate C_Prod
select * from #Datos
end
/*
exec sp_Inventario 2
select * from VW_MOVIMIENTOS
*/
alter procedure sp_Kardex(@Id_prod numeric)
as
begin
SET NOCOUNT ON
declare @Fecha datetime, @Ing NUMERIC, @Egr NUMERIC,@Precio numeric(18,2), @PP numeric(18,2)
declare @saldo NUMERIC
create table #Datos (
Fecha datetime, ingresos NUMERIC, egresos int,
saldo int, precio numeric(18,2), pp numeric(18,2)
)
set @saldo=0
declare C_Prod Cursor for
select FECHA,
ingreso=(case when tipo=1 then CANTIDAD else 0 end),
Egreso=(case when tipo=2 then CANTIDAD else 0 end),
punit= BASE_IMPONIBLE/cantidad,
pre_prom=isnull(pp,0)
from dbo.VW_MOVIMIENTOS
where FK_ID_PRODUCTO=@Id_prod order by FECHA
open C_Prod
fetch next from C_Prod into @Fecha, @Ing, @Egr,@Precio, @PP
while @@fetch_Status <>-1
begin
set @saldo=@saldo + (@Ing-@Egr)
insert into #Datos values (@Fecha, @Ing, @Egr,@saldo, @Precio, @PP )
fetch next from C_Prod into @Fecha, @Ing, @Egr,@Precio, @PP
end
close C_Prod
deallocate C_Prod
select * from #Datos
end
/*
exec sp_Kardex 1
select * from in_productos
*/

También podría gustarte