Mostrar total en cada línea del conjunto
Publicado por Manu (4 intervenciones) el 10/01/2018 16:32:20
Buen día compañeros tengo una base de datos en SQL server y tengo el siguiente problema.
Para empezar les presento las tablas con al menos los campos involucrados:
> Articulo
codarticulo
descripcion
existencia
> Factura
numeroFactura
fecha
> DetalleFactura
numeroFactura
linea
codarticulo
cantidad
La cuestión es que la existencia en la tabla Articulo no se trabaja con negativos sino que las lineas de las facturas se rebajan del inventario siempre y cuando haya una existencia suficiente, entonces si tengo una factura que en su detalle tiene el producto Leche con cantidad 2 pero en la tabla Articulo la existencia es de 1 dicho rebajo no se realiza, sino que la factura queda como en un estado de stand by hasta que ya haya una existencia suficiente para realizar el descargo de inventario de la misma.
Derivado de lo anterior estoy creando una consulta para poder mostrar cuales son los articulos que presentan existencia insuficiente para rebajar la facura y cuales son las lineas de facturas que requieren esa existencia, entonces tendríamos los siguientes campos en el informe:
Codigo Producto / Descripcion / No. Factura / Fecha / Cantidad / Existencia / Total Requerido
Total Requerido es la suma de la cantidad de todas las lineas de facturas de cada producto, por ejemplo tengo 3 facturas que contienen en su detalle una linea de producto Leche y cantidad 2, ese campo Total Requerido sería entonces 6 y en el query se vería así:
Codigo Producto | Descripcion | No. Factura | Fecha |Cantidad | Existencia | Total Requerido | Diferencia
0001 | Leche | 1000 | 01-01-2018 |2 | 1 | 6 | -5
0001 | Leche | 1001 | 01-01-2018 |2 | 1 | 6 | -5
0001 | Leche | 1002 | 01-01-2018 |2 | 1 | 6 | -5
Hasta el momento tengo todo excepto el Total Requerido, el problema es que en el detalle de una factura pueden haber varias lineas de un mismo producto (esto por motivo de regalías y cosas así) entonces el campo cantidad es un campo sumatorio en caso de que en la factura haya más de una línea del mismo producto.
En el informe solo deben aparecer los productos en los que por no haber existencia suficiente no se pueda rabajar de la mismala cantidad indicada en el detalle de la factura.
El query que tengo vendría a ser así:
SELECT a.codarticulo,b.descripcion,a.numeroFactura,c.fecha,SUM(a.cantidad),b.existencia
FROM ((DetalleFactura a LEFT JOIN Articulo b ON a.codarticulo = b.codarticulo)
JOIN Factura c ON a.numeroFactura = c.numeroFactura)
GROUP BY a.codarticulo,b.descripcion,a.numeroFactura,c.fecha,b.existencia
HAVING b.existencia - SUM(a.cantidad) < 0
No se como mostrar en cada linea ese Total Requerido que suma la cantidad de todas las lineas para cada tipo de producto, agradezco de antemano su ayuda, sugerencias y opiniones.
Saludos.
Para empezar les presento las tablas con al menos los campos involucrados:
> Articulo
codarticulo
descripcion
existencia
> Factura
numeroFactura
fecha
> DetalleFactura
numeroFactura
linea
codarticulo
cantidad
La cuestión es que la existencia en la tabla Articulo no se trabaja con negativos sino que las lineas de las facturas se rebajan del inventario siempre y cuando haya una existencia suficiente, entonces si tengo una factura que en su detalle tiene el producto Leche con cantidad 2 pero en la tabla Articulo la existencia es de 1 dicho rebajo no se realiza, sino que la factura queda como en un estado de stand by hasta que ya haya una existencia suficiente para realizar el descargo de inventario de la misma.
Derivado de lo anterior estoy creando una consulta para poder mostrar cuales son los articulos que presentan existencia insuficiente para rebajar la facura y cuales son las lineas de facturas que requieren esa existencia, entonces tendríamos los siguientes campos en el informe:
Codigo Producto / Descripcion / No. Factura / Fecha / Cantidad / Existencia / Total Requerido
Total Requerido es la suma de la cantidad de todas las lineas de facturas de cada producto, por ejemplo tengo 3 facturas que contienen en su detalle una linea de producto Leche y cantidad 2, ese campo Total Requerido sería entonces 6 y en el query se vería así:
Codigo Producto | Descripcion | No. Factura | Fecha |Cantidad | Existencia | Total Requerido | Diferencia
0001 | Leche | 1000 | 01-01-2018 |2 | 1 | 6 | -5
0001 | Leche | 1001 | 01-01-2018 |2 | 1 | 6 | -5
0001 | Leche | 1002 | 01-01-2018 |2 | 1 | 6 | -5
Hasta el momento tengo todo excepto el Total Requerido, el problema es que en el detalle de una factura pueden haber varias lineas de un mismo producto (esto por motivo de regalías y cosas así) entonces el campo cantidad es un campo sumatorio en caso de que en la factura haya más de una línea del mismo producto.
En el informe solo deben aparecer los productos en los que por no haber existencia suficiente no se pueda rabajar de la mismala cantidad indicada en el detalle de la factura.
El query que tengo vendría a ser así:
SELECT a.codarticulo,b.descripcion,a.numeroFactura,c.fecha,SUM(a.cantidad),b.existencia
FROM ((DetalleFactura a LEFT JOIN Articulo b ON a.codarticulo = b.codarticulo)
JOIN Factura c ON a.numeroFactura = c.numeroFactura)
GROUP BY a.codarticulo,b.descripcion,a.numeroFactura,c.fecha,b.existencia
HAVING b.existencia - SUM(a.cantidad) < 0
No se como mostrar en cada linea ese Total Requerido que suma la cantidad de todas las lineas para cada tipo de producto, agradezco de antemano su ayuda, sugerencias y opiniones.
Saludos.
Valora esta pregunta
0