Existencia Manual
SELECT dbo.Productos.IDProducto, dbo.Productos.NombreProducto, dbo.Productos.Presentacion, ISNULL(Movimientos.Entradas, 0) AS Entradas,
ISNULL(Movimientos.Salidas, 0) AS Salidas, ISNULL(SaldoAnterior.Entradas, 0) - ISNULL(SaldoAnterior.Salidas, 0) AS SaldoAnterior,
dbo.TiposProductos.NombreTipoProd, dbo.TiposProductos.Categoria1
FROM dbo.TiposProductos INNER JOIN
dbo.Productos ON dbo.TiposProductos.IDTipoProd = dbo.Productos.IDTipoProd LEFT OUTER JOIN
(SELECT DetalleCompras_1.IDProducto, SUM(CASE WHEN Documentos_1.TipoMovimiento BETWEEN 100 AND 199 THEN Cantidad ELSE 0 END) AS Entradas,
SUM(CASE WHEN Documentos_1.TipoMovimiento BETWEEN 200 AND 399 THEN Cantidad ELSE 0 END) AS Salidas
FROM dbo.DetalleCompras AS DetalleCompras_1 INNER JOIN
dbo.Documentos AS Documentos_1 ON DetalleCompras_1.IDDocumento = Documentos_1.IDDocumento
WHERE (DetalleCompras_1.TipoMovimiento BETWEEN 100 AND 399) AND (Documentos_1.Fecha < @arg1) AND Documentos_1.Estado<>0 AND DetalleCompras_1.Estado=1 and Documentos_1.NumSuc=@arg6
GROUP BY DetalleCompras_1.IDProducto) AS SaldoAnterior ON dbo.Productos.IDProducto = SaldoAnterior.IDProducto LEFT OUTER JOIN
(SELECT DetalleCompras_1.IDProducto, SUM(CASE WHEN Documentos_1.TipoMovimiento BETWEEN 100 AND 199 THEN Cantidad ELSE 0 END) AS Entradas,
SUM(CASE WHEN Documentos_1.TipoMovimiento BETWEEN 200 AND 399 THEN Cantidad ELSE 0 END) AS Salidas
FROM dbo.DetalleCompras AS DetalleCompras_1 INNER JOIN
dbo.Documentos AS Documentos_1 ON DetalleCompras_1.IDDocumento = Documentos_1.IDDocumento
WHERE (DetalleCompras_1.TipoMovimiento BETWEEN 100 AND 399) AND (Documentos_1.Fecha BETWEEN @arg1 AND @arg2) AND Documentos_1.Estado<>0 AND DetalleCompras_1.Estado=1 and Documentos_1.NumSuc=@arg6
GROUP BY DetalleCompras_1.IDProducto) AS Movimientos ON dbo.Productos.IDProducto = Movimientos.IDProducto