Advertisement
Guest User

Lista de Bodas

a guest
Dec 14th, 2019
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.96 KB | None | 0 0
  1. -- Se declara la variable con el numero de talonario que corresponde al pedido de lista de bodas.
  2. DECLARE @prefijo_boda INT;
  3. SET @prefijo_boda = 2006;
  4.  
  5. -- Se crea TABLA AUXILIAR desde el TRANSAC filtrando por los que tienen el talonario de pedidos creados exclusivamente para el efecto.
  6. -- Se contemplan tambien los eliminados, para que inicialmente se puedan tener todos los productos que alguna vez se agregaron a los pedidos
  7. -- Se limita a los pedidos que tengan una fecha de expiracion no superior al del momento de la consulta, ya que el operador utilizara esa fecha como limitador para la pagina web
  8. DECLARE @pedidos_boda TABLE(NROTRANS INT, NUMERO INT, OBSERVACION TEXT, OBSPARAFAC TEXT, CODITM INT, CANTIDAD INT, NROTRANSELIM INT);
  9. INSERT INTO @pedidos_boda
  10. SELECT T.NROTRANS, T.NUMERO, T.OBSERVACION, T.OBSPARAFAC, M.CODITM, M.CANTIDAD, T.NROTRANSELIM FROM TRANSAC AS T INNER JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS WHERE T.PREFIJO = @prefijo_boda AND T.FECHAEXT >= CAST(CURRENT_TIMESTAMP AS SMALLDATETIME) --AND T.NROTRANSELIM IS NULL
  11.  
  12.  
  13. -- Seleccionamos todos los productos que se hayan agregado como pedido de bodas, agrupados por numero de pedido, y codigo de producto.
  14. -- Hacemos un select al TRANSAC con un INNER JOIN a la TABLA AUXILIAR, para obtener los demas campos y excluir a los comprobantes que no sean pedidos de lista de boda.
  15. -- LEFT JOIN a MVSITEMS para ver los detalles del comprobante, y LEFT JOIN a la tabla de ITEMS para ver los detalles del producto
  16. -- LEFT JOIN a una subconsulta que repite el mismo procedimiento, pero a diferencia del principal que trae todos los productos, este trae solamente los productos que hayan quedado activos en el ultipo pedido activo.
  17. -- Se cruzan en el JOIN ON numero de pedido y codigo de item, para determinar cuales ya fueron dados de baja, para asi marcar como regalados.
  18. -- Se realizan subconsultas para las observaciones, ya que las mismas por ser tipo texto, no pueden ser agrupadas.
  19.  
  20. SELECT T.NUMERO, M.CODITM, I.DESCRIPCION, M.CANTIDAD, CASE WHEN NR.CODITM IS NULL THEN 'TRUE' ELSE 'FALSE' END AS REGALADO, ((SELECT TOP 1 OBSERVACION FROM @pedidos_boda AS X WHERE X.NUMERO = T.NUMERO)) AS TITULO, ((SELECT TOP 1 OBSPARAFAC FROM @pedidos_boda AS Z WHERE Z.NUMERO = T.NUMERO)) AS DETALLES
  21. FROM TRANSAC AS T
  22. INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
  23. LEFT JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS
  24. LEFT JOIN ITEMS AS I ON M.CODITM = I.CODITM
  25. LEFT JOIN (
  26.     SELECT T.NUMERO, M.CODITM, I.DESCRIPCION
  27.     FROM TRANSAC AS T
  28.     INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
  29.     LEFT JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS
  30.     LEFT JOIN ITEMS AS I ON M.CODITM = I.CODITM
  31.     WHERE T.NROTRANS IN (
  32.         SELECT MAX(T.NROTRANS) AS NROTRANS
  33.         FROM TRANSAC AS T
  34.         INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
  35.         WHERE PB.NROTRANSELIM IS NULL
  36.         GROUP BY T.NUMERO
  37.         )
  38. )AS NR ON (T.NUMERO = NR.NUMERO) AND (M.CODITM = NR.CODITM)
  39. GROUP BY T.NUMERO, M.CODITM, I.DESCRIPCION, NR.CODITM, M.CANTIDAD
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement