Existencia Almacén

Navigation:  KnowledgeBase Programación > Base de Datos > Compras > Consultas >

Existencia Almacén

Previous pageReturn to chapter overviewNext page

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