Cita:
@FechaInicio datetime,
@FechaFin datetime
As
Select P.Id
,P.descripcion
,P.categoria
,P.marca
,P.StockInicial
,isnull(J.Entrada,0)+ isnull(M.DevCliente,0)+ isnull(B.DevProveedor,0) Entradas
,isnull(S.Salida,0) Salidas
,isnull(J.Entrada,0)+ isnull(M.DevCliente,0)+ isnull(B.DevProveedor,0)+isnull(P.StockInicial,0)-isnull(S.Salida,0) SaldoFinal
From Productos P
Left outer join
(SELECT IDProducto,sum(Cantidad) as Salida
from DetalleVenta
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) S
On P.Id = S.IdProducto
Left outer join
(SELECT IdProducto,sum(Cantidad) as Entrada
from DetalleCompra
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) J
On P.Id = J.IdProducto
/*Aca de la devolucion de Clientes*/
Left outer join
(SELECT IDProducto,sum(Cantidad) as DevCliente
from DetalleDevolucion
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) M
On P.Id = M.IdProducto
/*Aca de la devolucion de Proveedores*/
Left outer join
(SELECT IDProducto,sum(Cantidad) as DevProveedor
from DetalleDevolucionProveedores
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) B
On P.Id = B.IdProducto
@FechaFin datetime
As
Select P.Id
,P.descripcion
,P.categoria
,P.marca
,P.StockInicial
,isnull(J.Entrada,0)+ isnull(M.DevCliente,0)+ isnull(B.DevProveedor,0) Entradas
,isnull(S.Salida,0) Salidas
,isnull(J.Entrada,0)+ isnull(M.DevCliente,0)+ isnull(B.DevProveedor,0)+isnull(P.StockInicial,0)-isnull(S.Salida,0) SaldoFinal
From Productos P
Left outer join
(SELECT IDProducto,sum(Cantidad) as Salida
from DetalleVenta
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) S
On P.Id = S.IdProducto
Left outer join
(SELECT IdProducto,sum(Cantidad) as Entrada
from DetalleCompra
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) J
On P.Id = J.IdProducto
/*Aca de la devolucion de Clientes*/
Left outer join
(SELECT IDProducto,sum(Cantidad) as DevCliente
from DetalleDevolucion
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) M
On P.Id = M.IdProducto
/*Aca de la devolucion de Proveedores*/
Left outer join
(SELECT IDProducto,sum(Cantidad) as DevProveedor
from DetalleDevolucionProveedores
Where fecha Between @FechaInicio and @FechaFin
Group by IdProducto) B
On P.Id = B.IdProducto